
(function(){
	var h=Ext.util,k=Ext.each,g=true,i=false;
	h.Observable=function(){
		var l=this,m=l.events;
		if(l.listeners){
			l.on(l.listeners);
			delete l.listeners
			}
			l.events=m||{}
	};

h.Observable.prototype={
	filterOptRe:/^(?:scope|delay|buffer|single)$/,
	fireEvent:function(){
		var l=Array.prototype.slice.call(arguments,0),n=l[0].toLowerCase(),o=this,m=g,r=o.events[n],t,p,s;
		if(o.eventsSuspended===g){
			if(p=o.eventQueue){
				p.push(l)
				}
			}else{
		if(typeof r=="object"){
			if(r.bubble){
				if(r.fire.apply(r,l.slice(1))===i){
					return i
					}
					s=o.getBubbleTarget&&o.getBubbleTarget();
				if(s&&s.enableBubble){
					t=s.events[n];
					if(!t||typeof t!="object"||!t.bubble){
						s.enableBubble(n)
						}
						return s.fireEvent.apply(s,l)
					}
				}else{
			l.shift();
			m=r.fire.apply(r,l)
			}
		}
}
return m
},
addListener:function(l,n,m,s){
	var p=this,r,t,q;
	if(typeof l=="object"){
		s=l;
		for(r in s){
			t=s[r];
			if(!p.filterOptRe.test(r)){
				p.addListener(r,t.fn||t,t.scope||s.scope,t.fn?t:s)
				}
			}
		}else{
	l=l.toLowerCase();
	q=p.events[l]||g;
	if(typeof q=="boolean"){
		p.events[l]=q=new h.Event(p,l)
		}
		q.addListener(n,m,typeof s=="object"?s:{})
	}
},
removeListener:function(l,n,m){
	var o=this.events[l.toLowerCase()];
	if(typeof o=="object"){
		o.removeListener(n,m)
		}
	},
purgeListeners:function(){
	var n=this.events,l,m;
	for(m in n){
		l=n[m];
		if(typeof l=="object"){
			l.clearListeners()
			}
		}
	},
addEvents:function(p){
	var n=this;
	n.events=n.events||{};

	if(typeof p=="string"){
		var l=arguments,m=l.length;
		while(m--){
			n.events[l[m]]=n.events[l[m]]||g
			}
		}else{
	Ext.applyIf(n.events,p)
	}
},
hasListener:function(l){
	var m=this.events[l.toLowerCase()];
	return typeof m=="object"&&m.listeners.length>0
	},
suspendEvents:function(l){
	this.eventsSuspended=g;
	if(l&&!this.eventQueue){
		this.eventQueue=[]
		}
	},
resumeEvents:function(){
	var l=this,m=l.eventQueue||[];
	l.eventsSuspended=i;
	delete l.eventQueue;
	k(m,function(n){
		l.fireEvent.apply(l,n)
		})
	}
};

var d=h.Observable.prototype;
d.on=d.addListener;
d.un=d.removeListener;
h.Observable.releaseCapture=function(l){
	l.fireEvent=d.fireEvent
	};

function e(m,n,l){
	return function(){
		if(n.target==arguments[0]){
			m.apply(l,Array.prototype.slice.call(arguments,0))
			}
		}
}
function b(p,q,m,n){
	m.task=new h.DelayedTask();
	return function(){
		m.task.delay(q.buffer,p,n,Array.prototype.slice.call(arguments,0))
		}
	}
function c(n,o,m,l){
	return function(){
		o.removeListener(m,l);
		return n.apply(l,arguments)
		}
	}
function a(p,q,m,n){
	return function(){
		var l=new h.DelayedTask(),o=Array.prototype.slice.call(arguments,0);
		if(!m.tasks){
			m.tasks=[]
			}
			m.tasks.push(l);
		l.delay(q.delay||10,function(){
			m.tasks.remove(l);
			p.apply(n,o)
			},n)
		}
	}
h.Event=function(m,l){
	this.name=l;
	this.obj=m;
	this.listeners=[]
	};

h.Event.prototype={
	addListener:function(p,o,n){
		var q=this,m;
		o=o||q.obj;
		if(!q.isListening(p,o)){
			m=q.createListener(p,o,n);
			if(q.firing){
				q.listeners=q.listeners.slice(0)
				}
				q.listeners.push(m)
			}
		},
createListener:function(q,p,r){
	r=r||{};

	p=p||this.obj;
	var m={
		fn:q,
		scope:p,
		options:r
	},n=q;
	if(r.target){
		n=e(n,r,p)
		}
		if(r.delay){
		n=a(n,r,m,p)
		}
		if(r.single){
		n=c(n,this,q,p)
		}
		if(r.buffer){
		n=b(n,r,m,p)
		}
		m.fireFn=n;
	return m
	},
findListener:function(p,o){
	var q=this.listeners,n=q.length,m;
	o=o||this.obj;
	while(n--){
		m=q[n];
		if(m){
			if(m.fn==p&&m.scope==o){
				return n
				}
			}
	}
return -1
},
isListening:function(m,l){
	return this.findListener(m,l)!=-1
	},
removeListener:function(r,q){
	var p,m,n,s=this,o=i;
	if((p=s.findListener(r,q))!=-1){
		if(s.firing){
			s.listeners=s.listeners.slice(0)
			}
			m=s.listeners[p];
		if(m.task){
			m.task.cancel();
			delete m.task
			}
			n=m.tasks&&m.tasks.length;
		if(n){
			while(n--){
				m.tasks[n].cancel()
				}
				delete m.tasks
			}
			s.listeners.splice(p,1);
		o=g
		}
		return o
	},
clearListeners:function(){
	var o=this,m=o.listeners,n=m.length;
	while(n--){
		o.removeListener(m[n].fn,m[n].scope)
		}
	},
fire:function(){
	var r=this,q=r.listeners,m=q.length,p=0,n;
	if(m>0){
		r.firing=g;
		var o=Array.prototype.slice.call(arguments,0);
		for(;p<m;p++){
			n=q[p];
			if(n&&n.fireFn.apply(n.scope||r.obj||window,o)===i){
				return(r.firing=i)
				}
			}
		}
	r.firing=i;
return g
}
}
})();
Ext.DomHelper=function(){
	var x=null,l=/^(?:br|frame|hr|img|input|link|meta|range|spacer|wbr|area|param|col)$/i,n=/^table|tbody|tr|td$/i,d=/tag|children|cn|html$/i,t=/td|tr|tbody/i,p=/([a-z0-9-]+)\s*:\s*([^;\s]+(?:\s*[^;\s]+)*);?/gi,v=/end/i,s,o="afterbegin",q="afterend",c="beforebegin",r="beforeend",a="<table>",i="</table>",b=a+"<tbody>",k="</tbody>"+i,m=b+"<tr>",w="</tr>"+k;
	function h(B,D,C,E,A,y){
		var z=s.insertHtml(E,Ext.getDom(B),u(D));
		return C?Ext.get(z,true):z
		}
		function u(D){
		var z="",y,C,B,E;
		if(typeof D=="string"){
			z=D
			}else{
			if(Ext.isArray(D)){
				for(var A=0;A<D.length;A++){
					if(D[A]){
						z+=u(D[A])
						}
					}
				}else{
		z+="<"+(D.tag=D.tag||"div");
		for(y in D){
			C=D[y];
			if(!d.test(y)){
				if(typeof C=="object"){
					z+=" "+y+'="';
					for(B in C){
						z+=B+":"+C[B]+";"
						}
						z+='"'
					}else{
					z+=" "+({
						cls:"class",
						htmlFor:"for"
					}
					[y]||y)+'="'+C+'"'
					}
				}
		}
		if(l.test(D.tag)){
	z+="/>"
	}else{
	z+=">";
	if((E=D.children||D.cn)){
		z+=u(E)
		}else{
		if(D.html){
			z+=D.html
			}
		}
	z+="</"+D.tag+">"
}
}
}
return z
}
function g(F,C,B,D){
	x.innerHTML=[C,B,D].join("");
	var y=-1,A=x,z;
	while(++y<F){
		A=A.firstChild
		}
		if(z=A.nextSibling){
		var E=document.createDocumentFragment();
		while(A){
			z=A.nextSibling;
			E.appendChild(A);
			A=z
			}
			A=E
		}
		return A
	}
	function e(y,z,B,A){
	var C,D;
	x=x||document.createElement("div");
	if(y=="td"&&(z==o||z==r)||!t.test(y)&&(z==c||z==q)){
		return
	}
	D=z==c?B:z==q?B.nextSibling:z==o?B.firstChild:null;
	if(z==c||z==q){
		B=B.parentNode
		}
		if(y=="td"||(y=="tr"&&(z==r||z==o))){
		C=g(4,m,A,w)
		}else{
		if((y=="tbody"&&(z==r||z==o))||(y=="tr"&&(z==c||z==q))){
			C=g(3,b,A,k)
			}else{
			C=g(2,a,A,i)
			}
		}
	B.insertBefore(C,D);
return C
}
s={
	markup:function(y){
		return u(y)
		},
	applyStyles:function(y,z){
		if(z){
			var A;
			y=Ext.fly(y);
			if(typeof z=="function"){
				z=z.call()
				}
				if(typeof z=="string"){
				p.lastIndex=0;
				while((A=p.exec(z))){
					y.setStyle(A[1],A[2])
					}
				}else{
			if(typeof z=="object"){
				y.setStyle(z)
				}
			}
	}
},
insertHtml:function(D,y,E){
	var C={},A,G,F,H,B,z;
	D=D.toLowerCase();
	C[c]=["BeforeBegin","previousSibling"];
	C[q]=["AfterEnd","nextSibling"];
	if(y.insertAdjacentHTML){
		if(n.test(y.tagName)&&(z=e(y.tagName.toLowerCase(),D,y,E))){
			return z
			}
			C[o]=["AfterBegin","firstChild"];
		C[r]=["BeforeEnd","lastChild"];
		if((A=C[D])){
			y.insertAdjacentHTML(A[0],E);
			return y[A[1]]
			}
		}else{
	F=y.ownerDocument.createRange();
	G="setStart"+(v.test(D)?"After":"Before");
	if(C[D]){
		F[G](y);
		H=F.createContextualFragment(E);
		y.parentNode.insertBefore(H,D==c?y:y.nextSibling);
		return y[(D==c?"previous":"next")+"Sibling"]
		}else{
		B=(D==o?"first":"last")+"Child";
		if(y.firstChild){
			F[G](y[B]);
			H=F.createContextualFragment(E);
			if(D==o){
				y.insertBefore(H,y.firstChild)
				}else{
				y.appendChild(H)
				}
			}else{
		y.innerHTML=E
		}
		return y[B]
	}
}
throw'Illegal insertion point -> "'+D+'"'
},
insertBefore:function(y,A,z){
	return h(y,A,z,c)
	},
insertAfter:function(y,A,z){
	return h(y,A,z,q,"nextSibling")
	},
insertFirst:function(y,A,z){
	return h(y,A,z,o,"firstChild")
	},
append:function(y,A,z){
	return h(y,A,z,r,"",true)
	},
overwrite:function(y,A,z){
	y=Ext.getDom(y);
	y.innerHTML=u(A);
	return z?Ext.get(y.firstChild):y.firstChild
	},
createHtml:u
};

return s
}();
Ext.Template=function(h){
	var k=this,c=arguments,e=[],d;
	if(Ext.isArray(h)){
		h=h.join("")
		}else{
		if(c.length>1){
			for(var g=0,b=c.length;g<b;g++){
				d=c[g];
				if(typeof d=="object"){
					Ext.apply(k,d)
					}else{
					e.push(d)
					}
				}
			h=e.join("")
		}
	}
k.html=h;
if(k.compiled){
	k.compile()
	}
};

Ext.Template.prototype={
	re:/\{([\w-]+)\}/g,
	applyTemplate:function(a){
		var b=this;
		return b.compiled?b.compiled(a):b.html.replace(b.re,function(c,d){
			return a[d]!==undefined?a[d]:""
			})
		},
	set:function(a,c){
		var b=this;
		b.html=a;
		b.compiled=null;
		return c?b.compile():b
		},
	compile:function(){
		var me=this,sep=Ext.isGecko?"+":",";
		function fn(m,name){
			name="values['"+name+"']";
			return"'"+sep+"("+name+" == undefined ? '' : "+name+")"+sep+"'"
			}
			eval("this.compiled = function(values){ return "+(Ext.isGecko?"'":"['")+me.html.replace(/\\/g,"\\\\").replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn)+(Ext.isGecko?"';};":"'].join('');};"));
		return me
		},
	insertFirst:function(b,a,c){
		return this.doInsert("afterBegin",b,a,c)
		},
	insertBefore:function(b,a,c){
		return this.doInsert("beforeBegin",b,a,c)
		},
	insertAfter:function(b,a,c){
		return this.doInsert("afterEnd",b,a,c)
		},
	append:function(b,a,c){
		return this.doInsert("beforeEnd",b,a,c)
		},
	doInsert:function(c,e,b,a){
		e=Ext.getDom(e);
		var d=Ext.DomHelper.insertHtml(c,e,this.applyTemplate(b));
		return a?Ext.get(d,true):d
		},
	overwrite:function(b,a,c){
		b=Ext.getDom(b);
		b.innerHTML=this.applyTemplate(a);
		return c?Ext.get(b.firstChild,true):b.firstChild
		}
	};

Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;
Ext.Template.from=function(b,a){
	b=Ext.getDom(b);
	return new Ext.Template(b.value||b.innerHTML,a||"")
	};

Ext.DomQuery=function(){
	var cache={},simpleCache={},valueCache={},nonSpace=/\S/,trimRe=/^\s+|\s+$/g,tplRe=/\{(\d+)\}/g,modeRe=/^(\s?[\/>+~]\s?|\s|$)/,tagTokenRe=/^(#)?([\w-\*]+)/,nthRe=/(\d*)n\+?(\d*)/,nthRe2=/\D/,isIE=window.ActiveXObject?true:false,key=30803;
	eval("var batch = 30803;");
	function child(parent,index){
		var i=0,n=parent.firstChild;
		while(n){
			if(n.nodeType==1){
				if(++i==index){
					return n
					}
				}
			n=n.nextSibling
		}
		return null
	}
	function next(n){
	while((n=n.nextSibling)&&n.nodeType!=1){}
	return n
	}
	function prev(n){
	while((n=n.previousSibling)&&n.nodeType!=1){}
	return n
	}
	function children(parent){
	var n=parent.firstChild,nodeIndex=-1,nextNode;
	while(n){
		nextNode=n.nextSibling;
		if(n.nodeType==3&&!nonSpace.test(n.nodeValue)){
			parent.removeChild(n)
			}else{
			n.nodeIndex=++nodeIndex
			}
			n=nextNode
		}
		return this
	}
	function byClassName(nodeSet,cls){
	if(!cls){
		return nodeSet
		}
		var result=[],ri=-1;
	for(var i=0,ci;ci=nodeSet[i];i++){
		if((" "+ci.className+" ").indexOf(cls)!=-1){
			result[++ri]=ci
			}
		}
	return result
}
function attrValue(n,attr){
	if(!n.tagName&&typeof n.length!="undefined"){
		n=n[0]
		}
		if(!n){
		return null
		}
		if(attr=="for"){
		return n.htmlFor
		}
		if(attr=="class"||attr=="className"){
		return n.className
		}
		return n.getAttribute(attr)||n[attr]
	}
	function getNodes(ns,mode,tagName){
	var result=[],ri=-1,cs;
	if(!ns){
		return result
		}
		tagName=tagName||"*";
	if(typeof ns.getElementsByTagName!="undefined"){
		ns=[ns]
		}
		if(!mode){
		for(var i=0,ni;ni=ns[i];i++){
			cs=ni.getElementsByTagName(tagName);
			for(var j=0,ci;ci=cs[j];j++){
				result[++ri]=ci
				}
			}
		}else{
	if(mode=="/"||mode==">"){
		var utag=tagName.toUpperCase();
		for(var i=0,ni,cn;ni=ns[i];i++){
			cn=ni.childNodes;
			for(var j=0,cj;cj=cn[j];j++){
				if(cj.nodeName==utag||cj.nodeName==tagName||tagName=="*"){
					result[++ri]=cj
					}
				}
			}
		}else{
	if(mode=="+"){
		var utag=tagName.toUpperCase();
		for(var i=0,n;n=ns[i];i++){
			while((n=n.nextSibling)&&n.nodeType!=1){}
			if(n&&(n.nodeName==utag||n.nodeName==tagName||tagName=="*")){
				result[++ri]=n
				}
			}
		}else{
	if(mode=="~"){
		var utag=tagName.toUpperCase();
		for(var i=0,n;n=ns[i];i++){
			while((n=n.nextSibling)){
				if(n.nodeName==utag||n.nodeName==tagName||tagName=="*"){
					result[++ri]=n
					}
				}
		}
	}
}
}
}
return result
}
function concat(a,b){
	if(b.slice){
		return a.concat(b)
		}
		for(var i=0,l=b.length;i<l;i++){
		a[a.length]=b[i]
		}
		return a
	}
	function byTag(cs,tagName){
	if(cs.tagName||cs==document){
		cs=[cs]
		}
		if(!tagName){
		return cs
		}
		var result=[],ri=-1;
	tagName=tagName.toLowerCase();
	for(var i=0,ci;ci=cs[i];i++){
		if(ci.nodeType==1&&ci.tagName.toLowerCase()==tagName){
			result[++ri]=ci
			}
		}
	return result
}
function byId(cs,id){
	if(cs.tagName||cs==document){
		cs=[cs]
		}
		if(!id){
		return cs
		}
		var result=[],ri=-1;
	for(var i=0,ci;ci=cs[i];i++){
		if(ci&&ci.id==id){
			result[++ri]=ci;
			return result
			}
		}
	return result
}
function byAttribute(cs,attr,value,op,custom){
	var result=[],ri=-1,useGetStyle=custom=="{",fn=Ext.DomQuery.operators[op],a,xml,hasXml;
	for(var i=0,ci;ci=cs[i];i++){
		if(ci.nodeType!=1){
			continue
		}
		if(!hasXml){
			xml=Ext.DomQuery.isXml(ci);
			hasXml=true
			}
			if(!xml){
			if(useGetStyle){
				a=Ext.DomQuery.getStyle(ci,attr)
				}else{
				if(attr=="class"||attr=="className"){
					a=ci.className
					}else{
					if(attr=="for"){
						a=ci.htmlFor
						}else{
						if(attr=="href"){
							a=ci.getAttribute("href",2)
							}else{
							a=ci.getAttribute(attr)
							}
						}
				}
		}
	}else{
	a=ci.getAttribute(attr)
	}
	if((fn&&fn(a,value))||(!fn&&a)){
	result[++ri]=ci
	}
}
return result
}
function byPseudo(cs,name,value){
	return Ext.DomQuery.pseudos[name](cs,value)
	}
	function nodupIEXml(cs){
	var d=++key,r;
	cs[0].setAttribute("_nodup",d);
	r=[cs[0]];
	for(var i=1,len=cs.length;i<len;i++){
		var c=cs[i];
		if(!c.getAttribute("_nodup")!=d){
			c.setAttribute("_nodup",d);
			r[r.length]=c
			}
		}
	for(var i=0,len=cs.length;i<len;i++){
	cs[i].removeAttribute("_nodup")
	}
	return r
}
function nodup(cs){
	if(!cs){
		return[]
		}
		var len=cs.length,c,i,r=cs,cj,ri=-1;
	if(!len||typeof cs.nodeType!="undefined"||len==1){
		return cs
		}
		if(isIE&&typeof cs[0].selectSingleNode!="undefined"){
		return nodupIEXml(cs)
		}
		var d=++key;
	cs[0]._nodup=d;
	for(i=1;c=cs[i];i++){
		if(c._nodup!=d){
			c._nodup=d
			}else{
			r=[];
			for(var j=0;j<i;j++){
				r[++ri]=cs[j]
				}
				for(j=i+1;cj=cs[j];j++){
				if(cj._nodup!=d){
					cj._nodup=d;
					r[++ri]=cj
					}
				}
			return r
		}
	}
	return r
}
function quickDiffIEXml(c1,c2){
	var d=++key,r=[];
	for(var i=0,len=c1.length;i<len;i++){
		c1[i].setAttribute("_qdiff",d)
		}
		for(var i=0,len=c2.length;i<len;i++){
		if(c2[i].getAttribute("_qdiff")!=d){
			r[r.length]=c2[i]
			}
		}
	for(var i=0,len=c1.length;i<len;i++){
	c1[i].removeAttribute("_qdiff")
	}
	return r
}
function quickDiff(c1,c2){
	var len1=c1.length,d=++key,r=[];
	if(!len1){
		return c2
		}
		if(isIE&&typeof c1[0].selectSingleNode!="undefined"){
		return quickDiffIEXml(c1,c2)
		}
		for(var i=0;i<len1;i++){
		c1[i]._qdiff=d
		}
		for(var i=0,len=c2.length;i<len;i++){
		if(c2[i]._qdiff!=d){
			r[r.length]=c2[i]
			}
		}
	return r
}
function quickId(ns,mode,root,id){
	if(ns==root){
		var d=root.ownerDocument||root;
		return d.getElementById(id)
		}
		ns=getNodes(ns,mode,"*");
	return byId(ns,id)
	}
	return{
	getStyle:function(el,name){
		return Ext.fly(el).getStyle(name)
		},
	compile:function(path,type){
		type=type||"select";
		var fn=["var f = function(root){\n var mode; ++batch; var n = root || document;\n"],mode,lastPath,matchers=Ext.DomQuery.matchers,matchersLn=matchers.length,modeMatch,lmode=path.match(modeRe);
		if(lmode&&lmode[1]){
			fn[fn.length]='mode="'+lmode[1].replace(trimRe,"")+'";';
			path=path.replace(lmode[1],"")
			}while(path.substr(0,1)=="/"){
			path=path.substr(1)
			}while(path&&lastPath!=path){
			lastPath=path;
			var tokenMatch=path.match(tagTokenRe);
			if(type=="select"){
				if(tokenMatch){
					if(tokenMatch[1]=="#"){
						fn[fn.length]='n = quickId(n, mode, root, "'+tokenMatch[2]+'");'
						}else{
						fn[fn.length]='n = getNodes(n, mode, "'+tokenMatch[2]+'");'
						}
						path=path.replace(tokenMatch[0],"")
					}else{
					if(path.substr(0,1)!="@"){
						fn[fn.length]='n = getNodes(n, mode, "*");'
						}
					}
			}else{
		if(tokenMatch){
			if(tokenMatch[1]=="#"){
				fn[fn.length]='n = byId(n, "'+tokenMatch[2]+'");'
				}else{
				fn[fn.length]='n = byTag(n, "'+tokenMatch[2]+'");'
				}
				path=path.replace(tokenMatch[0],"")
			}
		}while(!(modeMatch=path.match(modeRe))){
	var matched=false;
	for(var j=0;j<matchersLn;j++){
		var t=matchers[j];
		var m=path.match(t.re);
		if(m){
			fn[fn.length]=t.select.replace(tplRe,function(x,i){
				return m[i]
				});
			path=path.replace(m[0],"");
			matched=true;
			break
		}
	}
	if(!matched){
	throw'Error parsing selector, parsing failed at "'+path+'"'
	}
}
if(modeMatch[1]){
	fn[fn.length]='mode="'+modeMatch[1].replace(trimRe,"")+'";';
	path=path.replace(modeMatch[1],"")
	}
}
fn[fn.length]="return nodup(n);\n}";
eval(fn.join(""));
return f
},
jsSelect:function(path,root,type){
	root=root||document;
	if(typeof root=="string"){
		root=document.getElementById(root)
		}
		var paths=path.split(","),results=[];
	for(var i=0,len=paths.length;i<len;i++){
		var subPath=paths[i].replace(trimRe,"");
		if(!cache[subPath]){
			cache[subPath]=Ext.DomQuery.compile(subPath);
			if(!cache[subPath]){
				throw subPath+" is not a valid selector"
				}
			}
		var result=cache[subPath](root);
		if(result&&result!=document){
		results=results.concat(result)
		}
	}
	if(paths.length>1){
	return nodup(results)
	}
	return results
},
isXml:function(el){
	var docEl=(el?el.ownerDocument||el:0).documentElement;
	return docEl?docEl.nodeName!=="HTML":false
	},
select:document.querySelectorAll?function(path,root,type){
	root=root||document;
	if(!Ext.DomQuery.isXml(root)){
		try{
			var cs=root.querySelectorAll(path);
			return Ext.toArray(cs)
			}catch(ex){}
	}
	return Ext.DomQuery.jsSelect.call(this,path,root,type)
}:function(path,root,type){
	return Ext.DomQuery.jsSelect.call(this,path,root,type)
	},
selectNode:function(path,root){
	return Ext.DomQuery.select(path,root)[0]
	},
selectValue:function(path,root,defaultValue){
	path=path.replace(trimRe,"");
	if(!valueCache[path]){
		valueCache[path]=Ext.DomQuery.compile(path,"select")
		}
		var n=valueCache[path](root),v;
	n=n[0]?n[0]:n;
	if(typeof n.normalize=="function"){
		n.normalize()
		}
		v=(n&&n.firstChild?n.firstChild.nodeValue:null);
	return((v===null||v===undefined||v==="")?defaultValue:v)
	},
selectNumber:function(path,root,defaultValue){
	var v=Ext.DomQuery.selectValue(path,root,defaultValue||0);
	return parseFloat(v)
	},
is:function(el,ss){
	if(typeof el=="string"){
		el=document.getElementById(el)
		}
		var isArray=Ext.isArray(el),result=Ext.DomQuery.filter(isArray?el:[el],ss);
	return isArray?(result.length==el.length):(result.length>0)
	},
filter:function(els,ss,nonMatches){
	ss=ss.replace(trimRe,"");
	if(!simpleCache[ss]){
		simpleCache[ss]=Ext.DomQuery.compile(ss,"simple")
		}
		var result=simpleCache[ss](els);
	return nonMatches?quickDiff(result,els):result
	},
matchers:[{
	re:/^\.([\w-]+)/,
	select:'n = byClassName(n, " {1} ");'
},{
	re:/^\:([\w-]+)(?:\(((?:[^\s>\/]*|.*?))\))?/,
	select:'n = byPseudo(n, "{1}", "{2}");'
},{
	re:/^(?:([\[\{])(?:@)?([\w-]+)\s?(?:(=|.=)\s?['"]?(.*?)["']?)?[\]\}])/,
	select:'n = byAttribute(n, "{2}", "{4}", "{3}", "{1}");'
},{
	re:/^#([\w-]+)/,
	select:'n = byId(n, "{1}");'
},{
	re:/^@([\w-]+)/,
	select:'return {firstChild:{nodeValue:attrValue(n, "{1}")}};'
}],
operators:{
	"=":function(a,v){
		return a==v
		},
	"!=":function(a,v){
		return a!=v
		},
	"^=":function(a,v){
		return a&&a.substr(0,v.length)==v
		},
	"$=":function(a,v){
		return a&&a.substr(a.length-v.length)==v
		},
	"*=":function(a,v){
		return a&&a.indexOf(v)!==-1
		},
	"%=":function(a,v){
		return(a%v)==0
		},
	"|=":function(a,v){
		return a&&(a==v||a.substr(0,v.length+1)==v+"-")
		},
	"~=":function(a,v){
		return a&&(" "+a+" ").indexOf(" "+v+" ")!=-1
		}
	},
pseudos:{
	"first-child":function(c){
		var r=[],ri=-1,n;
		for(var i=0,ci;ci=n=c[i];i++){
			while((n=n.previousSibling)&&n.nodeType!=1){}
			if(!n){
				r[++ri]=ci
				}
			}
		return r
	},
"last-child":function(c){
	var r=[],ri=-1,n;
	for(var i=0,ci;ci=n=c[i];i++){
		while((n=n.nextSibling)&&n.nodeType!=1){}
		if(!n){
			r[++ri]=ci
			}
		}
	return r
},
"nth-child":function(c,a){
	var r=[],ri=-1,m=nthRe.exec(a=="even"&&"2n"||a=="odd"&&"2n+1"||!nthRe2.test(a)&&"n+"+a||a),f=(m[1]||1)-0,l=m[2]-0;
	for(var i=0,n;n=c[i];i++){
		var pn=n.parentNode;
		if(batch!=pn._batch){
			var j=0;
			for(var cn=pn.firstChild;cn;cn=cn.nextSibling){
				if(cn.nodeType==1){
					cn.nodeIndex=++j
					}
				}
			pn._batch=batch
		}
		if(f==1){
		if(l==0||n.nodeIndex==l){
			r[++ri]=n
			}
		}else{
		if((n.nodeIndex+l)%f==0){
			r[++ri]=n
			}
		}
}
return r
},
"only-child":function(c){
	var r=[],ri=-1;
	for(var i=0,ci;ci=c[i];i++){
		if(!prev(ci)&&!next(ci)){
			r[++ri]=ci
			}
		}
	return r
},
empty:function(c){
	var r=[],ri=-1;
	for(var i=0,ci;ci=c[i];i++){
		var cns=ci.childNodes,j=0,cn,empty=true;
		while(cn=cns[j]){
			++j;
			if(cn.nodeType==1||cn.nodeType==3){
				empty=false;
				break
			}
		}
		if(empty){
		r[++ri]=ci
		}
	}
	return r
},
contains:function(c,v){
	var r=[],ri=-1;
	for(var i=0,ci;ci=c[i];i++){
		if((ci.textContent||ci.innerText||"").indexOf(v)!=-1){
			r[++ri]=ci
			}
		}
	return r
},
nodeValue:function(c,v){
	var r=[],ri=-1;
	for(var i=0,ci;ci=c[i];i++){
		if(ci.firstChild&&ci.firstChild.nodeValue==v){
			r[++ri]=ci
			}
		}
	return r
},
checked:function(c){
	var r=[],ri=-1;
	for(var i=0,ci;ci=c[i];i++){
		if(ci.checked==true){
			r[++ri]=ci
			}
		}
	return r
},
not:function(c,ss){
	return Ext.DomQuery.filter(c,ss,true)
	},
any:function(c,selectors){
	var ss=selectors.split("|"),r=[],ri=-1,s;
	for(var i=0,ci;ci=c[i];i++){
		for(var j=0;s=ss[j];j++){
			if(Ext.DomQuery.is(ci,s)){
				r[++ri]=ci;
				break
			}
		}
		}
	return r
},
odd:function(c){
	return this["nth-child"](c,"odd")
	},
even:function(c){
	return this["nth-child"](c,"even")
	},
nth:function(c,a){
	return c[a-1]||[]
	},
first:function(c){
	return c[0]||[]
	},
last:function(c){
	return c[c.length-1]||[]
	},
has:function(c,ss){
	var s=Ext.DomQuery.select,r=[],ri=-1;
	for(var i=0,ci;ci=c[i];i++){
		if(s(ss,ci).length>0){
			r[++ri]=ci
			}
		}
	return r
},
next:function(c,ss){
	var is=Ext.DomQuery.is,r=[],ri=-1;
	for(var i=0,ci;ci=c[i];i++){
		var n=next(ci);
		if(n&&is(n,ss)){
			r[++ri]=ci
			}
		}
	return r
},
prev:function(c,ss){
	var is=Ext.DomQuery.is,r=[],ri=-1;
	for(var i=0,ci;ci=c[i];i++){
		var n=prev(ci);
		if(n&&is(n,ss)){
			r[++ri]=ci
			}
		}
	return r
}
}
}
}();
Ext.query=Ext.DomQuery.select;
Ext.util.DelayedTask=function(d,c,a){
	var e=this,g,b=function(){
		clearInterval(g);
		g=null;
		d.apply(c,a||[])
		};

	e.delay=function(i,l,k,h){
		e.cancel();
		d=l||d;
		c=k||c;
		a=h||a;
		g=setInterval(b,i)
		};

	e.cancel=function(){
		if(g){
			clearInterval(g);
			g=null
			}
		}
};
(function(){
	var h=document;
	Ext.Element=function(m,n){
		var o=typeof m=="string"?h.getElementById(m):m,p;
		if(!o){
			return null
			}
			p=o.id;
		if(!n&&p&&Ext.elCache[p]){
			return Ext.elCache[p].el
			}
			this.dom=o;
		this.id=p||Ext.id(o)
		};

	var d=Ext.DomHelper,e=Ext.Element,a=Ext.elCache;
	e.prototype={
		set:function(r,n){
			var p=this.dom,m,q,n=(n!==false)&&!!p.setAttribute;
			for(m in r){
				if(r.hasOwnProperty(m)){
					q=r[m];
					if(m=="style"){
						d.applyStyles(p,q)
						}else{
						if(m=="cls"){
							p.className=q
							}else{
							if(n){
								p.setAttribute(m,q)
								}else{
								p[m]=q
								}
							}
					}
			}
			}
		return this
},
defaultUnit:"px",
is:function(m){
	return Ext.DomQuery.is(this.dom,m)
	},
focus:function(p,o){
	var m=this,o=o||m.dom;
	try{
		if(Number(p)){
			m.focus.defer(p,null,[null,o])
			}else{
			o.focus()
			}
		}catch(n){}
return m
},
blur:function(){
	try{
		this.dom.blur()
		}catch(m){}
	return this
	},
getValue:function(m){
	var n=this.dom.value;
	return m?parseInt(n,10):n
	},
addListener:function(m,p,o,n){
	Ext.EventManager.on(this.dom,m,p,o||this,n);
	return this
	},
removeListener:function(m,o,n){
	Ext.EventManager.removeListener(this.dom,m,o,n||this);
	return this
	},
removeAllListeners:function(){
	Ext.EventManager.removeAll(this.dom);
	return this
	},
purgeAllListeners:function(){
	Ext.EventManager.purgeElement(this,true);
	return this
	},
addUnits:function(m){
	if(m===""||m=="auto"||m===undefined){
		m=m||""
		}else{
		if(!isNaN(m)||!i.test(m)){
			m=m+(this.defaultUnit||"px")
			}
		}
	return m
},
load:function(n,o,m){
	Ext.Ajax.request(Ext.apply({
		params:o,
		url:n.url||n,
		callback:m,
		el:this.dom,
		indicatorText:n.indicatorText||""
		},Ext.isObject(n)?n:{}));
	return this
	},
isBorderBox:function(){
	return Ext.isBorderBox||Ext.isForcedBorderBox||g[(this.dom.tagName||"").toLowerCase()]
	},
remove:function(){
	var m=this,n=m.dom;
	if(n){
		delete m.dom;
		Ext.removeNode(n)
		}
	},
hover:function(n,m,p,o){
	var q=this;
	q.on("mouseenter",n,p||q.dom,o);
	q.on("mouseleave",m,p||q.dom,o);
	return q
	},
contains:function(m){
	return !m?false:Ext.lib.Dom.isAncestor(this.dom,m.dom?m.dom:m)
	},
getAttributeNS:function(n,m){
	return this.getAttribute(m,n)
	},
getAttribute:Ext.isIE?function(m,o){
	var p=this.dom,n=typeof p[o+":"+m];
	if(["undefined","unknown"].indexOf(n)==-1){
		return p[o+":"+m]
		}
		return p[m]
	}:function(m,n){
	var o=this.dom;
	return o.getAttributeNS(n,m)||o.getAttribute(n+":"+m)||o.getAttribute(m)||o[m]
	},
update:function(m){
	if(this.dom){
		this.dom.innerHTML=m
		}
		return this
	}
};

var l=e.prototype;
e.addMethods=function(m){
	Ext.apply(l,m)
	};

l.on=l.addListener;
l.un=l.removeListener;
l.autoBoxAdjust=true;
var i=/\d+(px|em|%|en|ex|pt|in|cm|mm|pc)$/i,c;
e.get=function(n){
	var m,q,p;
	if(!n){
		return null
		}
		if(typeof n=="string"){
		if(!(q=h.getElementById(n))){
			return null
			}
			if(a[n]&&a[n].el){
			m=a[n].el;
			m.dom=q
			}else{
			m=e.addToCache(new e(q))
			}
			return m
		}else{
		if(n.tagName){
			if(!(p=n.id)){
				p=Ext.id(n)
				}
				if(a[p]&&a[p].el){
				m=a[p].el;
				m.dom=n
				}else{
				m=e.addToCache(new e(n))
				}
				return m
			}else{
			if(n instanceof e){
				if(n!=c){
					if(Ext.isIE&&(n.id==undefined||n.id=="")){
						n.dom=n.dom
						}else{
						n.dom=h.getElementById(n.id)||n.dom
						}
					}
				return n
			}else{
			if(n.isComposite){
				return n
				}else{
				if(Ext.isArray(n)){
					return e.select(n)
					}else{
					if(n==h){
						if(!c){
							var o=function(){};

							o.prototype=e.prototype;
							c=new o();
							c.dom=h
							}
							return c
						}
					}
			}
	}
}
}
return null
};

e.addToCache=function(m,n){
	n=n||m.id;
	a[n]={
		el:m,
		data:{},
		events:{}
};

return m
};

e.data=function(n,m,o){
	n=e.get(n);
	if(!n){
		return null
		}
		var p=a[n.id].data;
	if(arguments.length==2){
		return p[m]
		}else{
		return(p[m]=o)
		}
	};

function k(){
	if(!Ext.enableGarbageCollector){
		clearInterval(e.collectorThreadId)
		}else{
		var m,p,r,q;
		for(m in a){
			q=a[m];
			if(q.skipGC){
				continue
			}
			p=q.el;
			r=p.dom;
			if(!r||!r.parentNode||(!r.offsetParent&&!h.getElementById(m))){
				if(Ext.enableListenerCollection){
					Ext.EventManager.removeAll(r)
					}
					delete a[m]
			}
		}
		if(Ext.isIE){
		var n={};

		for(m in a){
			n[m]=a[m]
			}
			a=Ext.elCache=n
		}
	}
}
e.collectorThreadId=setInterval(k,30000);
var b=function(){};

b.prototype=e.prototype;
e.Flyweight=function(m){
	this.dom=m
	};

e.Flyweight.prototype=new b();
e.Flyweight.prototype.isFlyweight=true;
e._flyweights={};

e.fly=function(o,m){
	var n=null;
	m=m||"_global";
	if(o=Ext.getDom(o)){
		(e._flyweights[m]=e._flyweights[m]||new e.Flyweight()).dom=o;
		n=e._flyweights[m]
		}
		return n
	};

Ext.get=e.get;
Ext.fly=e.fly;
var g=Ext.isStrict?{
	select:1
}:{
	input:1,
	select:1,
	textarea:1
};

if(Ext.isIE||Ext.isGecko){
	g.button=1
	}
})();
Ext.Element.addMethods(function(){
	var d="parentNode",b="nextSibling",c="previousSibling",e=Ext.DomQuery,a=Ext.get;
	return{
		findParent:function(n,m,h){
			var k=this.dom,g=document.body,l=0,i;
			if(Ext.isGecko&&Object.prototype.toString.call(k)=="[object XULElement]"){
				return null
				}
				m=m||50;
			if(isNaN(m)){
				i=Ext.getDom(m);
				m=Number.MAX_VALUE
				}while(k&&k.nodeType==1&&l<m&&k!=g&&k!=i){
				if(e.is(k,n)){
					return h?a(k):k
					}
					l++;
				k=k.parentNode
				}
				return null
			},
		findParentNode:function(k,i,g){
			var h=Ext.fly(this.dom.parentNode,"_internal");
			return h?h.findParent(k,i,g):null
			},
		up:function(h,g){
			return this.findParentNode(h,g,true)
			},
		select:function(g){
			return Ext.Element.select(g,this.dom)
			},
		query:function(g){
			return e.select(g,this.dom)
			},
		child:function(g,h){
			var i=e.selectNode(g,this.dom);
			return h?i:a(i)
			},
		down:function(g,h){
			var i=e.selectNode(" > "+g,this.dom);
			return h?i:a(i)
			},
		parent:function(g,h){
			return this.matchNode(d,d,g,h)
			},
		next:function(g,h){
			return this.matchNode(b,b,g,h)
			},
		prev:function(g,h){
			return this.matchNode(c,c,g,h)
			},
		first:function(g,h){
			return this.matchNode(b,"firstChild",g,h)
			},
		last:function(g,h){
			return this.matchNode(c,"lastChild",g,h)
			},
		matchNode:function(h,l,g,i){
			var k=this.dom[l];
			while(k){
				if(k.nodeType==1&&(!g||e.is(k,g))){
					return !i?a(k):k
					}
					k=k[h]
				}
				return null
			}
		}
}());
Ext.Element.addMethods(function(){
	var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;
	return{
		appendChild:function(d){
			return a(d).appendTo(this)
			},
		appendTo:function(d){
			c(d).appendChild(this.dom);
			return this
			},
		insertBefore:function(d){
			(d=c(d)).parentNode.insertBefore(this.dom,d);
			return this
			},
		insertAfter:function(d){
			(d=c(d)).parentNode.insertBefore(this.dom,d.nextSibling);
			return this
			},
		insertFirst:function(e,d){
			e=e||{};

			if(e.nodeType||e.dom||typeof e=="string"){
				e=c(e);
				this.dom.insertBefore(e,this.dom.firstChild);
				return !d?a(e):e
				}else{
				return this.createChild(e,this.dom.firstChild,d)
				}
			},
	replace:function(d){
		d=a(d);
		this.insertBefore(d);
		d.remove();
		return this
		},
	replaceWith:function(d){
		var e=this;
		if(d.nodeType||d.dom||typeof d=="string"){
			d=c(d);
			e.dom.parentNode.insertBefore(d,e.dom)
			}else{
			d=b.insertBefore(e.dom,d)
			}
			delete Ext.elCache[e.id];
		Ext.removeNode(e.dom);
		e.id=Ext.id(e.dom=d);
		Ext.Element.addToCache(e.isFlyweight?new Ext.Element(e.dom):e);
		return e
		},
	createChild:function(e,d,g){
		e=e||{
			tag:"div"
		};

		return d?b.insertBefore(d,e,g!==true):b[!this.dom.firstChild?"overwrite":"append"](this.dom,e,g!==true)
		},
	wrap:function(d,e){
		var g=b.insertBefore(this.dom,d||{
			tag:"div"
		},!e);
		g.dom?g.dom.appendChild(this.dom):g.appendChild(this.dom);
		return g
		},
	insertHtml:function(e,g,d){
		var h=b.insertHtml(e,this.dom,g);
		return d?Ext.get(h):h
		}
	}
}());
Ext.Element.addMethods(function(){
	var B=Ext.supports,h={},y=/(-[a-z])/gi,t=document.defaultView,E=/alpha\(opacity=(.*)\)/i,m=/^\s+|\s+$/g,C=Ext.Element,v=/\s+/,b=/\w/g,d="padding",c="margin",z="border",u="-left",r="-right",x="-top",p="-bottom",k="-width",s=Math,A="hidden",e="isClipped",l="overflow",o="overflow-x",n="overflow-y",D="originalClip",i={
		l:z+u+k,
		r:z+r+k,
		t:z+x+k,
		b:z+p+k
		},g={
		l:d+u,
		r:d+r,
		t:d+x,
		b:d+p
		},a={
		l:c+u,
		r:c+r,
		t:c+x,
		b:c+p
		},F=Ext.Element.data;
	function q(G,H){
		return H.charAt(1).toUpperCase()
		}
		function w(G){
		return h[G]||(h[G]=G=="float"?(B.cssFloat?"cssFloat":"styleFloat"):G.replace(y,q))
		}
		return{
		adjustWidth:function(G){
			var H=this;
			var I=(typeof G=="number");
			if(I&&H.autoBoxAdjust&&!H.isBorderBox()){
				G-=(H.getBorderWidth("lr")+H.getPadding("lr"))
				}
				return(I&&G<0)?0:G
			},
		adjustHeight:function(G){
			var H=this;
			var I=(typeof G=="number");
			if(I&&H.autoBoxAdjust&&!H.isBorderBox()){
				G-=(H.getBorderWidth("tb")+H.getPadding("tb"))
				}
				return(I&&G<0)?0:G
			},
		addClass:function(K){
			var L=this,J,G,I,H=[];
			if(!Ext.isArray(K)){
				if(typeof K=="string"&&!this.hasClass(K)){
					L.dom.className+=" "+K
					}
				}else{
			for(J=0,G=K.length;J<G;J++){
				I=K[J];
				if(typeof I=="string"&&(" "+L.dom.className+" ").indexOf(" "+I+" ")==-1){
					H.push(I)
					}
				}
			if(H.length){
			L.dom.className+=" "+H.join(" ")
			}
		}
	return L
},
removeClass:function(L){
	var M=this,K,H,G,J,I;
	if(!Ext.isArray(L)){
		L=[L]
		}
		if(M.dom&&M.dom.className){
		I=M.dom.className.replace(m,"").split(v);
		for(K=0,G=L.length;K<G;K++){
			J=L[K];
			if(typeof J=="string"){
				J=J.replace(m,"");
				H=I.indexOf(J);
				if(H!=-1){
					I.splice(H,1)
					}
				}
		}
		M.dom.className=I.join(" ")
	}
	return M
},
radioClass:function(J){
	var K=this.dom.parentNode.childNodes,H,I,G;
	J=Ext.isArray(J)?J:[J];
	for(I=0,G=K.length;I<G;I++){
		H=K[I];
		if(H&&H.nodeType==1){
			Ext.fly(H,"_internal").removeClass(J)
			}
		}
	return this.addClass(J)
},
toggleClass:function(G){
	return this.hasClass(G)?this.removeClass(G):this.addClass(G)
	},
hasClass:function(G){
	return G&&(" "+this.dom.className+" ").indexOf(" "+G+" ")!=-1
	},
replaceClass:function(H,G){
	return this.removeClass(H).addClass(G)
	},
isStyle:function(G,H){
	return this.getStyle(G)==H
	},
getStyle:function(){
	return t&&t.getComputedStyle?function(L){
		var J=this.dom,G,I,H,K;
		if(J==document){
			return null
			}
			L=w(L);
		H=(G=J.style[L])?G:(I=t.getComputedStyle(J,""))?I[L]:null;
		if(L=="marginRight"&&H!="0px"&&!B.correctRightMargin){
			K=J.style.display;
			J.style.display="inline-block";
			H=t.getComputedStyle(J,"").marginRight;
			J.style.display=K
			}
			if(L=="backgroundColor"&&H=="rgba(0, 0, 0, 0)"&&!B.correctTransparentColor){
			H="transparent"
			}
			return H
		}:function(K){
		var I=this.dom,G,H;
		if(I==document){
			return null
			}
			if(K=="opacity"){
			if(I.style.filter.match){
				if(G=I.style.filter.match(E)){
					var J=parseFloat(G[1]);
					if(!isNaN(J)){
						return J?J/100:0
						}
					}
			}
		return 1
	}
	K=w(K);
return I.style[K]||((H=I.currentStyle)?H[K]:null)
}
}(),
getColor:function(G,H,L){
	var J=this.getStyle(G),I=(typeof L!="undefined")?L:"#",K;
	if(!J||(/transparent|inherit/.test(J))){
		return H
		}
		if(/^r/.test(J)){
		Ext.each(J.slice(4,J.length-1).split(","),function(M){
			K=parseInt(M,10);
			I+=(K<16?"0":"")+K.toString(16)
			})
		}else{
		J=J.replace("#","");
		I+=J.length==3?J.replace(/^(\w)(\w)(\w)$/,"$1$1$2$2$3$3"):J
		}
		return(I.length>5?I.toLowerCase():H)
	},
setStyle:function(J,I){
	var G,H;
	if(typeof J!="object"){
		G={};

		G[J]=I;
		J=G
		}
		for(H in J){
		I=J[H];
		H=="opacity"?this.setOpacity(I):this.dom.style[w(H)]=I
		}
		return this
	},
setOpacity:function(H,G){
	var K=this,I=K.dom.style;
	if(!G||!K.anim){
		if(Ext.isIE){
			var J=H<1?"alpha(opacity="+H*100+")":"",L=I.filter.replace(E,"").replace(m,"");
			I.zoom=1;
			I.filter=L+(L.length>0?" ":"")+J
			}else{
			I.opacity=H
			}
		}else{
	K.anim({
		opacity:{
			to:H
		}
	},K.preanim(arguments,1),null,0.35,"easeIn")
}
return K
},
clearOpacity:function(){
	var G=this.dom.style;
	if(Ext.isIE){
		if(!Ext.isEmpty(G.filter)){
			G.filter=G.filter.replace(E,"").replace(m,"")
			}
		}else{
	G.opacity=G["-moz-opacity"]=G["-khtml-opacity"]=""
	}
	return this
},
getHeight:function(I){
	var H=this,K=H.dom,J=Ext.isIE&&H.isStyle("display","none"),G=s.max(K.offsetHeight,J?0:K.clientHeight)||0;
	G=!I?G:G-H.getBorderWidth("tb")-H.getPadding("tb");
	return G<0?0:G
	},
getWidth:function(H){
	var I=this,K=I.dom,J=Ext.isIE&&I.isStyle("display","none"),G=s.max(K.offsetWidth,J?0:K.clientWidth)||0;
	G=!H?G:G-I.getBorderWidth("lr")-I.getPadding("lr");
	return G<0?0:G
	},
setWidth:function(H,G){
	var I=this;
	H=I.adjustWidth(H);
	!G||!I.anim?I.dom.style.width=I.addUnits(H):I.anim({
		width:{
			to:H
		}
	},I.preanim(arguments,1));
return I
},
setHeight:function(G,H){
	var I=this;
	G=I.adjustHeight(G);
	!H||!I.anim?I.dom.style.height=I.addUnits(G):I.anim({
		height:{
			to:G
		}
	},I.preanim(arguments,1));
return I
},
getBorderWidth:function(G){
	return this.addStyles(G,i)
	},
getPadding:function(G){
	return this.addStyles(G,g)
	},
clip:function(){
	var G=this,H=G.dom;
	if(!F(H,e)){
		F(H,e,true);
		F(H,D,{
			o:G.getStyle(l),
			x:G.getStyle(o),
			y:G.getStyle(n)
			});
		G.setStyle(l,A);
		G.setStyle(o,A);
		G.setStyle(n,A)
		}
		return G
	},
unclip:function(){
	var G=this,I=G.dom;
	if(F(I,e)){
		F(I,e,false);
		var H=F(I,D);
		if(H.o){
			G.setStyle(l,H.o)
			}
			if(H.x){
			G.setStyle(o,H.x)
			}
			if(H.y){
			G.setStyle(n,H.y)
			}
		}
	return G
},
addStyles:function(N,M){
	var K=0,L=N.match(b),J,I,H,G=L.length;
	for(H=0;H<G;H++){
		J=L[H];
		I=J&&parseInt(this.getStyle(M[J]),10);
		if(I){
			K+=s.abs(I)
			}
		}
	return K
},
margins:a
}
}());
(function(){
	var a=Ext.lib.Dom,b="left",g="right",d="top",i="bottom",h="position",c="static",e="relative",k="auto",l="z-index";
	Ext.Element.addMethods({
		getX:function(){
			return a.getX(this.dom)
			},
		getY:function(){
			return a.getY(this.dom)
			},
		getXY:function(){
			return a.getXY(this.dom)
			},
		getOffsetsTo:function(m){
			var p=this.getXY(),n=Ext.fly(m,"_internal").getXY();
			return[p[0]-n[0],p[1]-n[1]]
			},
		setX:function(m,n){
			return this.setXY([m,this.getY()],this.animTest(arguments,n,1))
			},
		setY:function(n,m){
			return this.setXY([this.getX(),n],this.animTest(arguments,m,1))
			},
		setLeft:function(m){
			this.setStyle(b,this.addUnits(m));
			return this
			},
		setTop:function(m){
			this.setStyle(d,this.addUnits(m));
			return this
			},
		setRight:function(m){
			this.setStyle(g,this.addUnits(m));
			return this
			},
		setBottom:function(m){
			this.setStyle(i,this.addUnits(m));
			return this
			},
		setXY:function(o,m){
			var n=this;
			if(!m||!n.anim){
				a.setXY(n.dom,o)
				}else{
				n.anim({
					points:{
						to:o
					}
				},n.preanim(arguments,1),"motion")
			}
			return n
		},
	setLocation:function(m,o,n){
		return this.setXY([m,o],this.animTest(arguments,n,2))
		},
	moveTo:function(m,o,n){
		return this.setXY([m,o],this.animTest(arguments,n,2))
		},
	getLeft:function(m){
		return !m?this.getX():parseInt(this.getStyle(b),10)||0
		},
	getRight:function(m){
		var n=this;
		return !m?n.getX()+n.getWidth():(n.getLeft(true)+n.getWidth())||0
		},
	getTop:function(m){
		return !m?this.getY():parseInt(this.getStyle(d),10)||0
		},
	getBottom:function(m){
		var n=this;
		return !m?n.getY()+n.getHeight():(n.getTop(true)+n.getHeight())||0
		},
	position:function(q,p,m,o){
		var n=this;
		if(!q&&n.isStyle(h,c)){
			n.setStyle(h,e)
			}else{
			if(q){
				n.setStyle(h,q)
				}
			}
		if(p){
		n.setStyle(l,p)
		}
		if(m||o){
		n.setXY([m||false,o||false])
		}
	},
clearPositioning:function(m){
	m=m||"";
	this.setStyle({
		left:m,
		right:m,
		top:m,
		bottom:m,
		"z-index":"",
		position:c
	});
	return this
	},
getPositioning:function(){
	var m=this.getStyle(b);
	var n=this.getStyle(d);
	return{
		position:this.getStyle(h),
		left:m,
		right:m?"":this.getStyle(g),
		top:n,
		bottom:n?"":this.getStyle(i),
		"z-index":this.getStyle(l)
		}
	},
setPositioning:function(m){
	var o=this,n=o.dom.style;
	o.setStyle(m);
	if(m.right==k){
		n.right=""
		}
		if(m.bottom==k){
		n.bottom=""
		}
		return o
	},
translatePoints:function(m,u){
	u=isNaN(m[1])?u:m[1];
	m=isNaN(m[0])?m:m[0];
	var q=this,r=q.isStyle(h,e),s=q.getXY(),n=parseInt(q.getStyle(b),10),p=parseInt(q.getStyle(d),10);
	n=!isNaN(n)?n:(r?0:q.dom.offsetLeft);
	p=!isNaN(p)?p:(r?0:q.dom.offsetTop);
	return{
		left:(m-s[0]+n),
		top:(u-s[1]+p)
		}
	},
animTest:function(n,m,o){
	return !!m&&this.preanim?this.preanim(n,o):false
	}
})
})();
Ext.Element.addMethods({
	isScrollable:function(){
		var a=this.dom;
		return a.scrollHeight>a.clientHeight||a.scrollWidth>a.clientWidth
		},
	scrollTo:function(a,b){
		this.dom["scroll"+(/top/i.test(a)?"Top":"Left")]=b;
		return this
		},
	getScroll:function(){
		var i=this.dom,h=document,a=h.body,c=h.documentElement,b,g,e;
		if(i==h||i==a){
			if(Ext.isIE&&Ext.isStrict){
				b=c.scrollLeft;
				g=c.scrollTop
				}else{
				b=window.pageXOffset;
				g=window.pageYOffset
				}
				e={
				left:b||(a?a.scrollLeft:0),
				top:g||(a?a.scrollTop:0)
				}
			}else{
		e={
			left:i.scrollLeft,
			top:i.scrollTop
			}
		}
	return e
}
});
Ext.Element.VISIBILITY=1;
Ext.Element.DISPLAY=2;
Ext.Element.OFFSETS=3;
Ext.Element.ASCLASS=4;
Ext.Element.visibilityCls="x-hide-nosize";
Ext.Element.addMethods(function(){
	var e=Ext.Element,q="opacity",k="visibility",g="display",d="hidden",o="offsets",l="asclass",n="none",a="nosize",b="originalDisplay",c="visibilityMode",h="isVisible",i=e.data,m=function(s){
		var r=i(s,b);
		if(r===undefined){
			i(s,b,r="")
			}
			return r
		},p=function(s){
		var r=i(s,c);
		if(r===undefined){
			i(s,c,r=1)
			}
			return r
		};

	return{
		originalDisplay:"",
		visibilityMode:1,
		setVisibilityMode:function(r){
			i(this.dom,c,r);
			return this
			},
		animate:function(s,u,t,v,r){
			this.anim(s,{
				duration:u,
				callback:t,
				easing:v
			},r);
			return this
			},
		anim:function(u,v,s,x,t,r){
			s=s||"run";
			v=v||{};

			var w=this,y=Ext.lib.Anim[s](w.dom,u,(v.duration||x)||0.35,(v.easing||t)||"easeOut",function(){
				if(r){
					r.call(w)
					}
					if(v.callback){
					v.callback.call(v.scope||w,w,v)
					}
				},w);
		v.anim=y;
		return y
		},
	preanim:function(r,s){
		return !r[s]?false:(typeof r[s]=="object"?r[s]:{
			duration:r[s+1],
			callback:r[s+2],
			easing:r[s+3]
			})
		},
	isVisible:function(){
		var r=this,t=r.dom,s=i(t,h);
		if(typeof s=="boolean"){
			return s
			}
			s=!r.isStyle(k,d)&&!r.isStyle(g,n)&&!((p(t)==e.ASCLASS)&&r.hasClass(r.visibilityCls||e.visibilityCls));
		i(t,h,s);
		return s
		},
	setVisible:function(u,r){
		var x=this,s,z,y,w,v=x.dom,t=p(v);
		if(typeof r=="string"){
			switch(r){
				case g:
					t=e.DISPLAY;
					break;
				case k:
					t=e.VISIBILITY;
					break;
				case o:
					t=e.OFFSETS;
					break;
				case a:case l:
					t=e.ASCLASS;
					break
					}
					x.setVisibilityMode(t);
			r=false
			}
			if(!r||!x.anim){
			if(t==e.ASCLASS){
				x[u?"removeClass":"addClass"](x.visibilityCls||e.visibilityCls)
				}else{
				if(t==e.DISPLAY){
					return x.setDisplayed(u)
					}else{
					if(t==e.OFFSETS){
						if(!u){
							x.hideModeStyles={
								position:x.getStyle("position"),
								top:x.getStyle("top"),
								left:x.getStyle("left")
								};

							x.applyStyles({
								position:"absolute",
								top:"-10000px",
								left:"-10000px"
							})
							}else{
							x.applyStyles(x.hideModeStyles||{
								position:"",
								top:"",
								left:""
							});
							delete x.hideModeStyles
							}
						}else{
					x.fixDisplay();
					v.style.visibility=u?"visible":d
					}
				}
		}
}else{
	if(u){
		x.setOpacity(0.01);
		x.setVisible(true)
		}
		x.anim({
		opacity:{
			to:(u?1:0)
			}
		},x.preanim(arguments,1),null,0.35,"easeIn",function(){
		u||x.setVisible(false).setOpacity(1)
		})
}
i(v,h,u);
return x
},
hasMetrics:function(){
	var r=this.dom;
	return this.isVisible()||(p(r)==e.VISIBILITY)
	},
toggle:function(r){
	var s=this;
	s.setVisible(!s.isVisible(),s.preanim(arguments,0));
	return s
	},
setDisplayed:function(r){
	if(typeof r=="boolean"){
		r=r?m(this.dom):n
		}
		this.setStyle(g,r);
	return this
	},
fixDisplay:function(){
	var r=this;
	if(r.isStyle(g,n)){
		r.setStyle(k,d);
		r.setStyle(g,m(this.dom));
		if(r.isStyle(g,n)){
			r.setStyle(g,"block")
			}
		}
},
hide:function(r){
	if(typeof r=="string"){
		this.setVisible(false,r);
		return this
		}
		this.setVisible(false,this.preanim(arguments,0));
	return this
	},
show:function(r){
	if(typeof r=="string"){
		this.setVisible(true,r);
		return this
		}
		this.setVisible(true,this.preanim(arguments,0));
	return this
	}
}
}());
(function(){
	var z=null,B=undefined,l=true,u=false,k="setX",h="setY",a="setXY",o="left",m="bottom",t="top",n="right",r="height",g="width",i="points",x="hidden",A="absolute",v="visible",e="motion",p="position",s="easeOut",d=new Ext.Element.Flyweight(),w={},y=function(C){
		return C||{}
	},q=function(C){
	d.dom=C;
	d.id=Ext.id(C);
	return d
	},c=function(C){
	if(!w[C]){
		w[C]=[]
		}
		return w[C]
	},b=function(D,C){
	w[D]=C
	};

Ext.enableFx=l;
Ext.Fx={
	switchStatements:function(D,E,C){
		return E.apply(this,C[D])
		},
	slideIn:function(I,F){
		F=y(F);
		var K=this,H=K.dom,N=H.style,P,C,M,E,D,N,J,O,L,G;
		I=I||"t";
		K.queueFx(F,function(){
			P=q(H).getXY();
			q(H).fixDisplay();
			C=q(H).getFxRestore();
			M={
				x:P[0],
				y:P[1],
				0:P[0],
				1:P[1],
				width:H.offsetWidth,
				height:H.offsetHeight
				};

			M.right=M.x+M.width;
			M.bottom=M.y+M.height;
			q(H).setWidth(M.width).setHeight(M.height);
			E=q(H).fxWrap(C.pos,F,x);
			N.visibility=v;
			N.position=A;
			function Q(){
				q(H).fxUnwrap(E,C.pos,F);
				N.width=C.width;
				N.height=C.height;
				q(H).afterFx(F)
				}
				O={
				to:[M.x,M.y]
				};

			L={
				to:M.width
				};

			G={
				to:M.height
				};

			function R(V,S,W,T,Y,aa,ad,ac,ab,X,U){
				var Z={};

				q(V).setWidth(W).setHeight(T);
				if(q(V)[Y]){
					q(V)[Y](aa)
					}
					S[ad]=S[ac]="0";
				if(ab){
					Z.width=ab
					}
					if(X){
					Z.height=X
					}
					if(U){
					Z.points=U
					}
					return Z
				}
				J=q(H).switchStatements(I.toLowerCase(),R,{
				t:[E,N,M.width,0,z,z,o,m,z,G,z],
				l:[E,N,0,M.height,z,z,n,t,L,z,z],
				r:[E,N,M.width,M.height,k,M.right,o,t,z,z,O],
				b:[E,N,M.width,M.height,h,M.bottom,o,t,z,G,O],
				tl:[E,N,0,0,z,z,n,m,L,G,O],
				bl:[E,N,0,0,h,M.y+M.height,n,t,L,G,O],
				br:[E,N,0,0,a,[M.right,M.bottom],o,t,L,G,O],
				tr:[E,N,0,0,k,M.x+M.width,o,m,L,G,O]
				});
			N.visibility=v;
			q(E).show();
			arguments.callee.anim=q(E).fxanim(J,F,e,0.5,s,Q)
			});
		return K
		},
	slideOut:function(G,E){
		E=y(E);
		var I=this,F=I.dom,L=F.style,M=I.getXY(),D,C,J,K,H={
			to:0
		};

		G=G||"t";
		I.queueFx(E,function(){
			C=q(F).getFxRestore();
			J={
				x:M[0],
				y:M[1],
				0:M[0],
				1:M[1],
				width:F.offsetWidth,
				height:F.offsetHeight
				};

			J.right=J.x+J.width;
			J.bottom=J.y+J.height;
			q(F).setWidth(J.width).setHeight(J.height);
			D=q(F).fxWrap(C.pos,E,v);
			L.visibility=v;
			L.position=A;
			q(D).setWidth(J.width).setHeight(J.height);
			function N(){
				E.useDisplay?q(F).setDisplayed(u):q(F).hide();
				q(F).fxUnwrap(D,C.pos,E);
				L.width=C.width;
				L.height=C.height;
				q(F).afterFx(E)
				}
				function O(P,X,V,Y,T,W,S,U,R){
				var Q={};

				P[X]=P[V]="0";
				Q[Y]=T;
				if(W){
					Q[W]=S
					}
					if(U){
					Q[U]=R
					}
					return Q
				}
				K=q(F).switchStatements(G.toLowerCase(),O,{
				t:[L,o,m,r,H],
				l:[L,n,t,g,H],
				r:[L,o,t,g,H,i,{
					to:[J.right,J.y]
					}],
				b:[L,o,t,r,H,i,{
					to:[J.x,J.bottom]
					}],
				tl:[L,n,m,g,H,r,H],
				bl:[L,n,t,g,H,r,H,i,{
					to:[J.x,J.bottom]
					}],
				br:[L,o,t,g,H,r,H,i,{
					to:[J.x+J.width,J.bottom]
					}],
				tr:[L,o,m,g,H,r,H,i,{
					to:[J.right,J.y]
					}]
				});
			arguments.callee.anim=q(D).fxanim(K,E,e,0.5,s,N)
			});
		return I
		},
	puff:function(I){
		I=y(I);
		var G=this,H=G.dom,D=H.style,E,C,F;
		G.queueFx(I,function(){
			E=q(H).getWidth();
			C=q(H).getHeight();
			q(H).clearOpacity();
			q(H).show();
			F=q(H).getFxRestore();
			function J(){
				I.useDisplay?q(H).setDisplayed(u):q(H).hide();
				q(H).clearOpacity();
				q(H).setPositioning(F.pos);
				D.width=F.width;
				D.height=F.height;
				D.fontSize="";
				q(H).afterFx(I)
				}
				arguments.callee.anim=q(H).fxanim({
				width:{
					to:q(H).adjustWidth(E*2)
					},
				height:{
					to:q(H).adjustHeight(C*2)
					},
				points:{
					by:[-E*0.5,-C*0.5]
					},
				opacity:{
					to:0
				},
				fontSize:{
					to:200,
					unit:"%"
				}
			},I,e,0.5,s,J)
		});
	return G
	},
switchOff:function(G){
	G=y(G);
	var E=this,F=E.dom,C=F.style,D;
	E.queueFx(G,function(){
		q(F).clearOpacity();
		q(F).clip();
		D=q(F).getFxRestore();
		function H(){
			G.useDisplay?q(F).setDisplayed(u):q(F).hide();
			q(F).clearOpacity();
			q(F).setPositioning(D.pos);
			C.width=D.width;
			C.height=D.height;
			q(F).afterFx(G)
			}
			q(F).fxanim({
			opacity:{
				to:0.3
			}
		},z,z,0.1,z,function(){
			q(F).clearOpacity();
			(function(){
				q(F).fxanim({
					height:{
						to:1
					},
					points:{
						by:[0,q(F).getHeight()*0.5]
						}
					},G,e,0.3,"easeIn",H)
			}).defer(100)
		})
	});
return E
},
highlight:function(E,I){
	I=y(I);
	var G=this,H=G.dom,C=I.attr||"backgroundColor",D={},F;
	G.queueFx(I,function(){
		q(H).clearOpacity();
		q(H).show();
		function J(){
			H.style[C]=F;
			q(H).afterFx(I)
			}
			F=H.style[C];
		D[C]={
			from:E||"ffff9c",
			to:I.endColor||q(H).getColor(C)||"ffffff"
			};

		arguments.callee.anim=q(H).fxanim(D,I,"color",1,"easeIn",J)
		});
	return G
	},
frame:function(C,F,I){
	I=y(I);
	var E=this,H=E.dom,D,G;
	E.queueFx(I,function(){
		C=C||"#C3DAF9";
		if(C.length==6){
			C="#"+C
			}
			F=F||1;
		q(H).show();
		var M=q(H).getXY(),K={
			x:M[0],
			y:M[1],
			0:M[0],
			1:M[1],
			width:H.offsetWidth,
			height:H.offsetHeight
			},J=function(){
			D=q(document.body||document.documentElement).createChild({
				style:{
					position:A,
					"z-index":35000,
					border:"0px solid "+C
					}
				});
		return D.queueFx({},L)
		};

	arguments.callee.anim={
		isAnimated:true,
		stop:function(){
			F=0;
			D.stopFx()
			}
		};

	function L(){
		var N=Ext.isBorderBox?2:1;
		G=D.anim({
			top:{
				from:K.y,
				to:K.y-20
				},
			left:{
				from:K.x,
				to:K.x-20
				},
			borderWidth:{
				from:0,
				to:10
			},
			opacity:{
				from:1,
				to:0
			},
			height:{
				from:K.height,
				to:K.height+20*N
				},
			width:{
				from:K.width,
				to:K.width+20*N
				}
			},{
			duration:I.duration||1,
			callback:function(){
				D.remove();
				--F>0?J():q(H).afterFx(I)
				}
			});
arguments.callee.anim={
	isAnimated:true,
	stop:function(){
		G.stop()
		}
	}
}
J()
});
return E
},
pause:function(E){
	var D=this.dom,C;
	this.queueFx({},function(){
		C=setTimeout(function(){
			q(D).afterFx({})
			},E*1000);
		arguments.callee.anim={
			isAnimated:true,
			stop:function(){
				clearTimeout(C);
				q(D).afterFx({})
				}
			}
	});
return this
},
fadeIn:function(E){
	E=y(E);
	var C=this,D=C.dom,F=E.endOpacity||1;
	C.queueFx(E,function(){
		q(D).setOpacity(0);
		q(D).fixDisplay();
		D.style.visibility=v;
		arguments.callee.anim=q(D).fxanim({
			opacity:{
				to:F
			}
		},E,z,0.5,s,function(){
			if(F==1){
				q(D).clearOpacity()
				}
				q(D).afterFx(E)
			})
	});
return C
},
fadeOut:function(F){
	F=y(F);
	var D=this,E=D.dom,C=E.style,G=F.endOpacity||0;
	D.queueFx(F,function(){
		arguments.callee.anim=q(E).fxanim({
			opacity:{
				to:G
			}
		},F,z,0.5,s,function(){
			if(G==0){
				Ext.Element.data(E,"visibilityMode")==Ext.Element.DISPLAY||F.useDisplay?C.display="none":C.visibility=x;
				q(E).clearOpacity()
				}
				q(E).afterFx(F)
			})
	});
return D
},
scale:function(C,D,E){
	this.shift(Ext.apply({},E,{
		width:C,
		height:D
	}));
	return this
	},
shift:function(E){
	E=y(E);
	var D=this.dom,C={};

	this.queueFx(E,function(){
		for(var F in E){
			if(E[F]!=B){
				C[F]={
					to:E[F]
					}
				}
		}
		C.width?C.width.to=q(D).adjustWidth(E.width):C;
	C.height?C.height.to=q(D).adjustWidth(E.height):C;
	if(C.x||C.y||C.xy){
		C.points=C.xy||{
			to:[C.x?C.x.to:q(D).getX(),C.y?C.y.to:q(D).getY()]
			}
		}
	arguments.callee.anim=q(D).fxanim(C,E,e,0.35,s,function(){
	q(D).afterFx(E)
	})
});
return this
},
ghost:function(F,D){
	D=y(D);
	var H=this,E=H.dom,K=E.style,I={
		opacity:{
			to:0
		},
		points:{}
},L=I.points,C,J,G;
F=F||"b";
H.queueFx(D,function(){
	C=q(E).getFxRestore();
	J=q(E).getWidth();
	G=q(E).getHeight();
	function M(){
		D.useDisplay?q(E).setDisplayed(u):q(E).hide();
		q(E).clearOpacity();
		q(E).setPositioning(C.pos);
		K.width=C.width;
		K.height=C.height;
		q(E).afterFx(D)
		}
		L.by=q(E).switchStatements(F.toLowerCase(),function(O,N){
		return[O,N]
		},{
		t:[0,-G],
		l:[-J,0],
		r:[J,0],
		b:[0,G],
		tl:[-J,-G],
		bl:[-J,G],
		br:[J,G],
		tr:[J,-G]
		});
	arguments.callee.anim=q(E).fxanim(I,D,e,0.5,s,M)
	});
return H
},
syncFx:function(){
	var C=this;
	C.fxDefaults=Ext.apply(C.fxDefaults||{},{
		block:u,
		concurrent:l,
		stopFx:u
	});
	return C
	},
sequenceFx:function(){
	var C=this;
	C.fxDefaults=Ext.apply(C.fxDefaults||{},{
		block:u,
		concurrent:u,
		stopFx:u
	});
	return C
	},
nextFx:function(){
	var C=c(this.dom.id)[0];
	if(C){
		C.call(this)
		}
	},
hasActiveFx:function(){
	return c(this.dom.id)[0]
	},
stopFx:function(C){
	var D=this,F=D.dom.id;
	if(D.hasActiveFx()){
		var E=c(F)[0];
		if(E&&E.anim){
			if(E.anim.isAnimated){
				b(F,[E]);
				E.anim.stop(C!==undefined?C:l)
				}else{
				b(F,[])
				}
			}
	}
return D
},
beforeFx:function(C){
	if(this.hasActiveFx()&&!C.concurrent){
		if(C.stopFx){
			this.stopFx();
			return l
			}
			return u
		}
		return l
	},
hasFxBlock:function(){
	var C=c(this.dom.id);
	return C&&C[0]&&C[0].block
	},
queueFx:function(F,C){
	var D=q(this.dom);
	if(!D.hasFxBlock()){
		Ext.applyIf(F,D.fxDefaults);
		if(!F.concurrent){
			var E=D.beforeFx(F);
			C.block=F.block;
			c(D.dom.id).push(C);
			if(E){
				D.nextFx()
				}
			}else{
		C.call(D)
		}
	}
return D
},
fxWrap:function(I,G,E){
	var F=this.dom,D,C;
	if(!G.wrap||!(D=Ext.getDom(G.wrap))){
		if(G.fixPosition){
			C=q(F).getXY()
			}
			var H=document.createElement("div");
		H.style.visibility=E;
		D=F.parentNode.insertBefore(H,F);
		q(D).setPositioning(I);
		if(q(D).isStyle(p,"static")){
			q(D).position("relative")
			}
			q(F).clearPositioning("auto");
		q(D).clip();
		D.appendChild(F);
		if(C){
			q(D).setXY(C)
			}
		}
	return D
},
fxUnwrap:function(D,G,F){
	var E=this.dom;
	q(E).clearPositioning();
	q(E).setPositioning(G);
	if(!F.wrap){
		var C=q(D).dom.parentNode;
		C.insertBefore(E,D);
		q(D).remove()
		}
	},
getFxRestore:function(){
	var C=this.dom.style;
	return{
		pos:this.getPositioning(),
		width:C.width,
		height:C.height
		}
	},
afterFx:function(D){
	var C=this.dom,E=C.id;
	if(D.afterStyle){
		q(C).setStyle(D.afterStyle)
		}
		if(D.afterCls){
		q(C).addClass(D.afterCls)
		}
		if(D.remove==l){
		q(C).remove()
		}
		if(D.callback){
		D.callback.call(D.scope,q(C))
		}
		if(!D.concurrent){
		c(E).shift();
		q(C).nextFx()
		}
	},
fxanim:function(F,G,D,H,E,C){
	D=D||"run";
	G=G||{};

	var I=Ext.lib.Anim[D](this.dom,F,(G.duration||H)||0.35,(G.easing||E)||s,C,this);
	G.anim=I;
	return I
	}
};

Ext.Fx.resize=Ext.Fx.scale;
Ext.Element.addMethods(Ext.Fx)
})();
Ext.CompositeElementLite=function(b,a){
	this.elements=[];
	this.add(b,a);
	this.el=new Ext.Element.Flyweight()
	};

Ext.CompositeElementLite.prototype={
	isComposite:true,
	getElement:function(a){
		var b=this.el;
		b.dom=a;
		b.id=a.id;
		return b
		},
	transformElement:function(a){
		return Ext.getDom(a)
		},
	getCount:function(){
		return this.elements.length
		},
	add:function(d,b){
		var e=this,g=e.elements;
		if(!d){
			return this
			}
			if(typeof d=="string"){
			d=Ext.Element.selectorFunction(d,b)
			}else{
			if(d.isComposite){
				d=d.elements
				}else{
				if(!Ext.isIterable(d)){
					d=[d]
					}
				}
		}
	for(var c=0,a=d.length;c<a;++c){
	g.push(e.transformElement(d[c]))
	}
	return e
},
invoke:function(g,b){
	var h=this,d=h.elements,a=d.length,k,c;
	for(c=0;c<a;c++){
		k=d[c];
		if(k){
			Ext.Element.prototype[g].apply(h.getElement(k),b)
			}
		}
	return h
},
item:function(b){
	var d=this,c=d.elements[b],a=null;
	if(c){
		a=d.getElement(c)
		}
		return a
	},
addListener:function(b,k,h,g){
	var d=this.elements,a=d.length,c,l;
	for(c=0;c<a;c++){
		l=d[c];
		if(l){
			Ext.EventManager.on(l,b,k,h||l,g)
			}
		}
	return this
},
each:function(g,d){
	var h=this,c=h.elements,a=c.length,b,k;
	for(b=0;b<a;b++){
		k=c[b];
		if(k){
			k=this.getElement(k);
			if(g.call(d||k,k,h,b)===false){
				break
			}
		}
	}
	return h
},
fill:function(a){
	var b=this;
	b.elements=[];
	b.add(a);
	return b
	},
filter:function(a){
	var b=[],d=this,c=Ext.isFunction(a)?a:function(e){
		return e.is(a)
		};

	d.each(function(h,e,g){
		if(c(h,g)!==false){
			b[b.length]=d.transformElement(h)
			}
		});
d.elements=b;
return d
},
indexOf:function(a){
	return this.elements.indexOf(this.transformElement(a))
	},
replaceElement:function(e,c,a){
	var b=!isNaN(e)?e:this.indexOf(e),g;
	if(b>-1){
		c=Ext.getDom(c);
		if(a){
			g=this.elements[b];
			g.parentNode.insertBefore(c,g);
			Ext.removeNode(g)
			}
			this.elements.splice(b,1,c)
		}
		return this
	},
clear:function(){
	this.elements=[]
	}
};

Ext.CompositeElementLite.prototype.on=Ext.CompositeElementLite.prototype.addListener;
Ext.CompositeElementLite.importElementMethods=function(){
	var c,b=Ext.Element.prototype,a=Ext.CompositeElementLite.prototype;
	for(c in b){
		if(typeof b[c]=="function"){
			(function(d){
				a[d]=a[d]||function(){
					return this.invoke(d,arguments)
					}
				}).call(a,c)
		}
	}
	};

Ext.CompositeElementLite.importElementMethods();
if(Ext.DomQuery){
	Ext.Element.selectorFunction=Ext.DomQuery.select
		}
		Ext.Element.select=function(a,b){
	var c;
	if(typeof a=="string"){
		c=Ext.Element.selectorFunction(a,b)
		}else{
		if(a.length!==undefined){
			c=a
			}else{
			throw"Invalid selector"
			}
		}
	return new Ext.CompositeElementLite(c)
	};

Ext.select=Ext.Element.select;
(function(){
	var b="beforerequest",e="requestcomplete",d="requestexception",h=undefined,c="load",i="POST",a="GET",g=window;
	Ext.data.Connection=function(k){
		Ext.apply(this,k);
		this.addEvents(b,e,d);
		Ext.data.Connection.superclass.constructor.call(this)
		};

	Ext.extend(Ext.data.Connection,Ext.util.Observable,{
		timeout:30000,
		autoAbort:false,
		disableCaching:true,
		disableCachingParam:"_dc",
		request:function(q){
			var t=this;
			if(t.fireEvent(b,t,q)){
				if(q.el){
					if(!Ext.isEmpty(q.indicatorText)){
						t.indicatorText='<div class="loading-indicator">'+q.indicatorText+"</div>"
						}
						if(t.indicatorText){
						Ext.getDom(q.el).innerHTML=t.indicatorText
						}
						q.success=(Ext.isFunction(q.success)?q.success:function(){}).createInterceptor(function(o){
						Ext.getDom(q.el).innerHTML=o.responseText
						})
					}
					var m=q.params,l=q.url||t.url,k,r={
					success:t.handleResponse,
					failure:t.handleFailure,
					scope:t,
					argument:{
						options:q
					},
					timeout:Ext.num(q.timeout,t.timeout)
					},n,u;
				if(Ext.isFunction(m)){
					m=m.call(q.scope||g,q)
					}
					m=Ext.urlEncode(t.extraParams,Ext.isObject(m)?Ext.urlEncode(m):m);
				if(Ext.isFunction(l)){
					l=l.call(q.scope||g,q)
					}
					if((n=Ext.getDom(q.form))){
					l=l||n.action;
					if(q.isUpload||(/multipart\/form-data/i.test(n.getAttribute("enctype")))){
						return t.doFormUpload.call(t,q,m,l)
						}
						u=Ext.lib.Ajax.serializeForm(n);
					m=m?(m+"&"+u):u
					}
					k=q.method||t.method||((m||q.xmlData||q.jsonData)?i:a);
				if(k===a&&(t.disableCaching&&q.disableCaching!==false)||q.disableCaching===true){
					var s=q.disableCachingParam||t.disableCachingParam;
					l=Ext.urlAppend(l,s+"="+(new Date().getTime()))
					}
					q.headers=Ext.apply(q.headers||{},t.defaultHeaders||{});
				if(q.autoAbort===true||t.autoAbort){
					t.abort()
					}
					if((k==a||q.xmlData||q.jsonData)&&m){
					l=Ext.urlAppend(l,m);
					m=""
					}
					return(t.transId=Ext.lib.Ajax.request(k,l,r,m,q))
				}else{
				return q.callback?q.callback.apply(q.scope,[q,h,h]):null
				}
			},
	isLoading:function(k){
		return k?Ext.lib.Ajax.isCallInProgress(k):!!this.transId
		},
	abort:function(k){
		if(k||this.isLoading()){
			Ext.lib.Ajax.abort(k||this.transId)
			}
		},
	handleResponse:function(k){
		this.transId=false;
		var l=k.argument.options;
		k.argument=l?l.argument:null;
		this.fireEvent(e,this,k,l);
		if(l.success){
			l.success.call(l.scope,k,l)
			}
			if(l.callback){
			l.callback.call(l.scope,l,true,k)
			}
		},
handleFailure:function(k,m){
	this.transId=false;
	var l=k.argument.options;
	k.argument=l?l.argument:null;
	this.fireEvent(d,this,k,l,m);
	if(l.failure){
		l.failure.call(l.scope,k,l)
		}
		if(l.callback){
		l.callback.call(l.scope,l,false,k)
		}
	},
doFormUpload:function(r,k,l){
	var m=Ext.id(),w=document,s=w.createElement("iframe"),n=Ext.getDom(r.form),v=[],u,q="multipart/form-data",p={
		target:n.target,
		method:n.method,
		encoding:n.encoding,
		enctype:n.enctype,
		action:n.action
		};

	Ext.fly(s).set({
		id:m,
		name:m,
		cls:"x-hidden",
		src:Ext.SSL_SECURE_URL
		});
	w.body.appendChild(s);
	if(Ext.isIE){
		document.frames[m].name=m
		}
		Ext.fly(n).set({
		target:m,
		method:i,
		enctype:q,
		encoding:q,
		action:l||p.action
		});
	Ext.iterate(Ext.urlDecode(k,false),function(x,o){
		u=w.createElement("input");
		Ext.fly(u).set({
			type:"hidden",
			value:o,
			name:x
		});
		n.appendChild(u);
		v.push(u)
		});
	function t(){
		var y=this,x={
			responseText:"",
			responseXML:null,
			argument:r.argument
			},B,A;
		try{
			B=s.contentWindow.document||s.contentDocument||g.frames[m].document;
			if(B){
				if(B.body){
					if(/textarea/i.test((A=B.body.firstChild||{}).tagName)){
						x.responseText=A.value
						}else{
						x.responseText=B.body.innerHTML
						}
					}
				x.responseXML=B.XMLDocument||B
			}
		}catch(z){}
	Ext.EventManager.removeListener(s,c,t,y);
	y.fireEvent(e,y,x,r);
	function o(E,D,C){
	if(Ext.isFunction(E)){
		E.apply(D,C)
		}
	}
o(r.success,r.scope,[x,r]);
o(r.callback,r.scope,[r,true,x]);
if(!y.debugUploads){
	setTimeout(function(){
		Ext.removeNode(s)
		},100)
	}
}
Ext.EventManager.on(s,c,t,this);
n.submit();
Ext.fly(n).set(p);
Ext.each(v,function(o){
	Ext.removeNode(o)
	})
}
})
})();
Ext.Ajax=new Ext.data.Connection({
	autoAbort:false,
	serializeForm:function(a){
		return Ext.lib.Ajax.serializeForm(a)
		}
	});
Ext.util.JSON=new (function(){
	var useHasOwn=!!{}.hasOwnProperty,isNative=function(){
		var useNative=null;
		return function(){
			if(useNative===null){
				useNative=Ext.USE_NATIVE_JSON&&window.JSON&&JSON.toString()=="[object JSON]"
				}
				return useNative
			}
		}(),pad=function(n){
	return n<10?"0"+n:n
	},doDecode=function(json){
	return eval("("+json+")")
	},doEncode=function(o){
	if(!Ext.isDefined(o)||o===null){
		return"null"
		}else{
		if(Ext.isArray(o)){
			return encodeArray(o)
			}else{
			if(Ext.isDate(o)){
				return Ext.util.JSON.encodeDate(o)
				}else{
				if(Ext.isString(o)){
					return encodeString(o)
					}else{
					if(typeof o=="number"){
						return isFinite(o)?String(o):"null"
						}else{
						if(Ext.isBoolean(o)){
							return String(o)
							}else{
							var a=["{"],b,i,v;
							for(i in o){
								if(!o.getElementsByTagName){
									if(!useHasOwn||o.hasOwnProperty(i)){
										v=o[i];
										switch(typeof v){
											case"undefined":case"function":case"unknown":
												break;
											default:
												if(b){
												a.push(",")
												}
												a.push(doEncode(i),":",v===null?"null":doEncode(v));
												b=true
												}
											}
								}
							}
							a.push("}");
				return a.join("")
				}
			}
	}
}
}
}
},m={
	"\b":"\\b",
	"\t":"\\t",
	"\n":"\\n",
	"\f":"\\f",
	"\r":"\\r",
	'"':'\\"',
	"\\":"\\\\"
},encodeString=function(s){
	if(/["\\\x00-\x1f]/.test(s)){
		return'"'+s.replace(/([\x00-\x1f\\"])/g,function(a,b){
			var c=m[b];
			if(c){
				return c
				}
				c=b.charCodeAt();
			return"\\u00"+Math.floor(c/16).toString(16)+(c%16).toString(16)
			})+'"'
		}
		return'"'+s+'"'
	},encodeArray=function(o){
	var a=["["],b,i,l=o.length,v;
	for(i=0;i<l;i+=1){
		v=o[i];
		switch(typeof v){
			case"undefined":case"function":case"unknown":
				break;
			default:
				if(b){
				a.push(",")
				}
				a.push(v===null?"null":Ext.util.JSON.encode(v));
				b=true
				}
			}
	a.push("]");
return a.join("")
};

this.encodeDate=function(o){
	return'"'+o.getFullYear()+"-"+pad(o.getMonth()+1)+"-"+pad(o.getDate())+"T"+pad(o.getHours())+":"+pad(o.getMinutes())+":"+pad(o.getSeconds())+'"'
	};

this.encode=function(){
	var ec;
	return function(o){
		if(!ec){
			ec=isNative()?JSON.stringify:doEncode
			}
			return ec(o)
		}
	}();
this.decode=function(){
	var dc;
	return function(json){
		if(!dc){
			dc=isNative()?JSON.parse:doDecode
			}
			return dc(json)
		}
	}()
})();
Ext.encode=Ext.util.JSON.encode;
Ext.decode=Ext.util.JSON.decode;
Ext.EventManager=function(){
	var A,q,k=false,m=Ext.isGecko||Ext.isWebKit||Ext.isSafari,p=Ext.lib.Event,r=Ext.lib.Dom,c=document,B=window,s="DOMContentLoaded",u="complete",g=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,v=[];
	function o(F){
		var I=false,E=0,D=v.length,G=false,H;
		if(F){
			if(F.getElementById||F.navigator){
				for(;E<D;++E){
					H=v[E];
					if(H.el===F){
						I=H.id;
						break
					}
				}
				if(!I){
				I=Ext.id(F);
				v.push({
					id:I,
					el:F
				});
				G=true
				}
			}else{
		I=Ext.id(F)
		}
		if(!Ext.elCache[I]){
		Ext.Element.addToCache(new Ext.Element(F),I);
		if(G){
			Ext.elCache[I].skipGC=true
			}
		}
}
return I
}
function n(F,H,K,G,E,M){
	F=Ext.getDom(F);
	var D=o(F),L=Ext.elCache[D].events,I;
	I=p.on(F,H,E);
	L[H]=L[H]||[];
	L[H].push([K,E,M,I,G]);
	if(F.addEventListener&&H=="mousewheel"){
		var J=["DOMMouseScroll",E,false];
		F.addEventListener.apply(F,J);
		Ext.EventManager.addListener(B,"unload",function(){
			F.removeEventListener.apply(F,J)
			})
		}
		if(F==c&&H=="mousedown"){
		Ext.EventManager.stoppedMouseDownEvent.addListener(E)
		}
	}
function d(){
	if(window!=top){
		return false
		}
		try{
		c.documentElement.doScroll("left")
		}catch(D){
		return false
		}
		b();
	return true
	}
	function C(D){
	if(Ext.isIE&&d()){
		return true
		}
		if(c.readyState==u){
		b();
		return true
		}
		k||(q=setTimeout(arguments.callee,2));
	return false
	}
	var l;
function i(D){
	l||(l=Ext.query("style, link[rel=stylesheet]"));
	if(l.length==c.styleSheets.length){
		b();
		return true
		}
		k||(q=setTimeout(arguments.callee,2));
	return false
	}
	function z(D){
	c.removeEventListener(s,arguments.callee,false);
	i()
	}
	function b(D){
	if(!k){
		k=true;
		if(q){
			clearTimeout(q)
			}
			if(m){
			c.removeEventListener(s,b,false)
			}
			if(Ext.isIE&&C.bindIE){
			c.detachEvent("onreadystatechange",C)
			}
			p.un(B,"load",arguments.callee)
		}
		if(A&&!Ext.isReady){
		Ext.isReady=true;
		A.fire();
		A.listeners=[]
		}
	}
function a(){
	A||(A=new Ext.util.Event());
	if(m){
		c.addEventListener(s,b,false)
		}
		if(Ext.isIE){
		if(!C()){
			C.bindIE=true;
			c.attachEvent("onreadystatechange",C)
			}
		}else{
	if(Ext.isOpera){
		(c.readyState==u&&i())||c.addEventListener(s,z,false)
		}else{
		if(Ext.isWebKit){
			C()
			}
		}
}
p.on(B,"load",b)
}
function y(D,E){
	return function(){
		var F=Ext.toArray(arguments);
		if(E.target==Ext.EventObject.setEvent(F[0]).target){
			D.apply(this,F)
			}
		}
}
function x(E,F,D){
	return function(G){
		D.delay(F.buffer,E,null,[new Ext.EventObjectImpl(G)])
		}
	}
function t(H,G,D,F,E){
	return function(I){
		Ext.EventManager.removeListener(G,D,F,E);
		H(I)
		}
	}
function e(E,F,D){
	return function(H){
		var G=new Ext.util.DelayedTask(E);
		if(!D.tasks){
			D.tasks=[]
			}
			D.tasks.push(G);
		G.delay(F.delay||10,E,null,[new Ext.EventObjectImpl(H)])
		}
	}
function h(I,H,D,K,L){
	var E=(!D||typeof D=="boolean")?{}:D,F=Ext.getDom(I),G;
	K=K||E.fn;
	L=L||E.scope;
	if(!F){
		throw'Error listening for "'+H+'". Element "'+I+"\" doesn't exist."
		}
		function J(N){
		if(!Ext){
			return
		}
		N=Ext.EventObject.setEvent(N);
		var M;
		if(E.delegate){
			if(!(M=N.getTarget(E.delegate,F))){
				return
			}
		}else{
		M=N.target
		}
		if(E.stopEvent){
		N.stopEvent()
		}
		if(E.preventDefault){
		N.preventDefault()
		}
		if(E.stopPropagation){
		N.stopPropagation()
		}
		if(E.normalized===false){
		N=N.browserEvent
		}
		K.call(L||F,N,M,E)
	}
	if(E.target){
	J=y(J,E)
	}
	if(E.delay){
	J=e(J,E,K)
	}
	if(E.single){
	J=t(J,F,H,K,L)
	}
	if(E.buffer){
	G=new Ext.util.DelayedTask(J);
	J=x(J,E,G)
	}
	n(F,H,K,G,J,L);
return J
}
var w={
	addListener:function(F,D,H,G,E){
		if(typeof D=="object"){
			var K=D,I,J;
			for(I in K){
				J=K[I];
				if(!g.test(I)){
					if(Ext.isFunction(J)){
						h(F,I,K,J,K.scope)
						}else{
						h(F,I,J)
						}
					}
			}
			}else{
	h(F,D,E,H,G)
	}
},
removeListener:function(F,J,N,O){
	F=Ext.getDom(F);
	var D=o(F),L=F&&(Ext.elCache[D].events)[J]||[],E,I,G,H,K,M;
	for(I=0,K=L.length;I<K;I++){
		if(Ext.isArray(M=L[I])&&M[0]==N&&(!O||M[2]==O)){
			if(M[4]){
				M[4].cancel()
				}
				H=N.tasks&&N.tasks.length;
			if(H){
				while(H--){
					N.tasks[H].cancel()
					}
					delete N.tasks
				}
				E=M[1];
			p.un(F,J,p.extAdapter?M[3]:E);
			if(E&&F.addEventListener&&J=="mousewheel"){
				F.removeEventListener("DOMMouseScroll",E,false)
				}
				if(E&&F==c&&J=="mousedown"){
				Ext.EventManager.stoppedMouseDownEvent.removeListener(E)
				}
				L.splice(I,1);
			if(L.length===0){
				delete Ext.elCache[D].events[J]
			}
			for(H in Ext.elCache[D].events){
				return false
				}
				Ext.elCache[D].events={};

			return false
			}
		}
	},
removeAll:function(F){
	F=Ext.getDom(F);
	var E=o(F),K=Ext.elCache[E]||{},N=K.events||{},J,I,L,G,M,H,D;
	for(G in N){
		if(N.hasOwnProperty(G)){
			J=N[G];
			for(I=0,L=J.length;I<L;I++){
				M=J[I];
				if(M[4]){
					M[4].cancel()
					}
					if(M[0].tasks&&(H=M[0].tasks.length)){
					while(H--){
						M[0].tasks[H].cancel()
						}
						delete M.tasks
					}
					D=M[1];
				p.un(F,G,p.extAdapter?M[3]:D);
				if(F.addEventListener&&D&&G=="mousewheel"){
					F.removeEventListener("DOMMouseScroll",D,false)
					}
					if(D&&F==c&&G=="mousedown"){
					Ext.EventManager.stoppedMouseDownEvent.removeListener(D)
					}
				}
			}
	}
	if(Ext.elCache[E]){
	Ext.elCache[E].events={}
}
},
getListeners:function(G,D){
	G=Ext.getDom(G);
	var I=o(G),E=Ext.elCache[I]||{},H=E.events||{},F=[];
	if(H&&H[D]){
		return H[D]
		}else{
		return null
		}
	},
purgeElement:function(F,D,H){
	F=Ext.getDom(F);
	var E=o(F),K=Ext.elCache[E]||{},L=K.events||{},G,J,I;
	if(H){
		if(L&&L.hasOwnProperty(H)){
			J=L[H];
			for(G=0,I=J.length;G<I;G++){
				Ext.EventManager.removeListener(F,H,J[G][0])
				}
			}
		}else{
	Ext.EventManager.removeAll(F)
	}
	if(D&&F&&F.childNodes){
	for(G=0,I=F.childNodes.length;G<I;G++){
		Ext.EventManager.purgeElement(F.childNodes[G],D,H)
		}
	}
},
_unload:function(){
	var D;
	for(D in Ext.elCache){
		Ext.EventManager.removeAll(D)
		}
		delete Ext.elCache;
	delete Ext.Element._flyweights;
	var H,E,G,F=Ext.lib.Ajax;
	(typeof F.conn=="object")?E=F.conn:E={};

	for(G in E){
		H=E[G];
		if(H){
			F.abort({
				conn:H,
				tId:G
			})
			}
		}
	},
onDocumentReady:function(F,E,D){
	if(Ext.isReady){
		A||(A=new Ext.util.Event());
		A.addListener(F,E,D);
		A.fire();
		A.listeners=[]
		}else{
		if(!A){
			a()
			}
			D=D||{};

		D.delay=D.delay||1;
		A.addListener(F,E,D)
		}
	},
fireDocReady:b
};

w.on=w.addListener;
w.un=w.removeListener;
w.stoppedMouseDownEvent=new Ext.util.Event();
return w
}();
Ext.onReady=Ext.EventManager.onDocumentReady;
(function(){
	var a=function(){
		var c=document.body||document.getElementsByTagName("body")[0];
		if(!c){
			return false
			}
			var b=[" ",Ext.isIE?"ext-ie "+(Ext.isIE6?"ext-ie6":(Ext.isIE7?"ext-ie7":"ext-ie8")):Ext.isGecko?"ext-gecko "+(Ext.isGecko2?"ext-gecko2":"ext-gecko3"):Ext.isOpera?"ext-opera":Ext.isWebKit?"ext-webkit":""];
		if(Ext.isSafari){
			b.push("ext-safari "+(Ext.isSafari2?"ext-safari2":(Ext.isSafari3?"ext-safari3":"ext-safari4")))
			}else{
			if(Ext.isChrome){
				b.push("ext-chrome")
				}
			}
		if(Ext.isMac){
		b.push("ext-mac")
		}
		if(Ext.isLinux){
		b.push("ext-linux")
		}
		if(Ext.isStrict||Ext.isBorderBox){
		var d=c.parentNode;
		if(d){
			Ext.fly(d,"_internal").addClass(((Ext.isStrict&&Ext.isIE)||(!Ext.enableForcedBoxModel&&!Ext.isIE))?" ext-strict":" ext-border-box")
			}
		}
	if(Ext.enableForcedBoxModel&&!Ext.isIE){
	Ext.isForcedBorderBox=true;
	b.push("ext-forced-border-box")
	}
	Ext.fly(c,"_internal").addClass(b);
	return true
	};

if(!a()){
	Ext.onReady(a)
	}
})();
(function(){
	var b=Ext.apply(Ext.supports,{
		correctRightMargin:true,
		correctTransparentColor:true,
		cssFloat:true
	});
	var a=function(){
		var g=document.createElement("div"),e=document,c,d;
		g.innerHTML='<div style="height:30px;width:50px;"><div style="height:20px;width:20px;"></div></div><div style="float:left;background-color:transparent;">';
		e.body.appendChild(g);
		d=g.lastChild;
		if((c=e.defaultView)){
			if(c.getComputedStyle(g.firstChild.firstChild,null).marginRight!="0px"){
				b.correctRightMargin=false
				}
				if(c.getComputedStyle(d,null).backgroundColor!="transparent"){
				b.correctTransparentColor=false
				}
			}
		b.cssFloat=!!d.style.cssFloat;
	e.body.removeChild(g)
	};

if(Ext.isReady){
	a()
	}else{
	Ext.onReady(a)
	}
})();
Ext.EventObject=function(){
	var b=Ext.lib.Event,c=/(dbl)?click/,a={
		3:13,
		63234:37,
		63235:39,
		63232:38,
		63233:40,
		63276:33,
		63277:34,
		63272:46,
		63273:36,
		63275:35
	},d=Ext.isIE?{
		1:0,
		4:1,
		2:2
	}:{
		0:0,
		1:1,
		2:2
	};

	Ext.EventObjectImpl=function(g){
		if(g){
			this.setEvent(g.browserEvent||g)
			}
		};

Ext.EventObjectImpl.prototype={
	setEvent:function(h){
		var g=this;
		if(h==g||(h&&h.browserEvent)){
			return h
			}
			g.browserEvent=h;
		if(h){
			g.button=h.button?d[h.button]:(h.which?h.which-1:-1);
			if(c.test(h.type)&&g.button==-1){
				g.button=0
				}
				g.type=h.type;
			g.shiftKey=h.shiftKey;
			g.ctrlKey=h.ctrlKey||h.metaKey||false;
			g.altKey=h.altKey;
			g.keyCode=h.keyCode;
			g.charCode=h.charCode;
			g.target=b.getTarget(h);
			g.xy=b.getXY(h)
			}else{
			g.button=-1;
			g.shiftKey=false;
			g.ctrlKey=false;
			g.altKey=false;
			g.keyCode=0;
			g.charCode=0;
			g.target=null;
			g.xy=[0,0]
			}
			return g
		},
	stopEvent:function(){
		var e=this;
		if(e.browserEvent){
			if(e.browserEvent.type=="mousedown"){
				Ext.EventManager.stoppedMouseDownEvent.fire(e)
				}
				b.stopEvent(e.browserEvent)
			}
		},
preventDefault:function(){
	if(this.browserEvent){
		b.preventDefault(this.browserEvent)
		}
	},
stopPropagation:function(){
	var e=this;
	if(e.browserEvent){
		if(e.browserEvent.type=="mousedown"){
			Ext.EventManager.stoppedMouseDownEvent.fire(e)
			}
			b.stopPropagation(e.browserEvent)
		}
	},
getCharCode:function(){
	return this.charCode||this.keyCode
	},
getKey:function(){
	return this.normalizeKey(this.keyCode||this.charCode)
	},
normalizeKey:function(e){
	return Ext.isSafari?(a[e]||e):e
	},
getPageX:function(){
	return this.xy[0]
	},
getPageY:function(){
	return this.xy[1]
	},
getXY:function(){
	return this.xy
	},
getTarget:function(g,h,e){
	return g?Ext.fly(this.target).findParent(g,h,e):(e?Ext.get(this.target):this.target)
	},
getRelatedTarget:function(){
	return this.browserEvent?b.getRelatedTarget(this.browserEvent):null
	},
getWheelDelta:function(){
	var g=this.browserEvent;
	var h=0;
	if(g.wheelDelta){
		h=g.wheelDelta/120
		}else{
		if(g.detail){
			h=-g.detail/3
			}
		}
	return h
},
within:function(h,i,e){
	if(h){
		var g=this[i?"getRelatedTarget":"getTarget"]();
		return g&&((e?(g==Ext.getDom(h)):false)||Ext.fly(h).contains(g))
		}
		return false
	}
};

return new Ext.EventObjectImpl()
}();
Ext.Loader=Ext.apply({},{
	load:function(k,i,l,c){
		var l=l||this,g=document.getElementsByTagName("head")[0],b=document.createDocumentFragment(),a=k.length,h=0,e=this;
		var m=function(n){
			g.appendChild(e.buildScriptTag(k[n],d))
			};

		var d=function(){
			h++;
			if(a==h&&typeof i=="function"){
				i.call(l)
				}else{
				if(c===true){
					m(h)
					}
				}
		};

if(c===true){
	m.call(this,0)
	}else{
	Ext.each(k,function(o,n){
		b.appendChild(this.buildScriptTag(o,d))
		},this);
	g.appendChild(b)
	}
},
buildScriptTag:function(b,c){
	var a=document.createElement("script");
	a.type="text/javascript";
	a.src=b;
	if(a.readyState){
		a.onreadystatechange=function(){
			if(a.readyState=="loaded"||a.readyState=="complete"){
				a.onreadystatechange=null;
				c()
				}
			}
	}else{
	a.onload=c
	}
	return a
}
});
Ext.ns("Ext.grid","Ext.list","Ext.dd","Ext.tree","Ext.form","Ext.menu","Ext.state","Ext.layout","Ext.app","Ext.ux","Ext.chart","Ext.direct");
Ext.apply(Ext,function(){
	var c=Ext,a=0,b=null;
	return{
		emptyFn:function(){},
		BLANK_IMAGE_URL:Ext.isIE6||Ext.isIE7||Ext.isAir?"http://www.extjs.com/s.gif":"",
		extendX:function(d,e){
			return Ext.extend(d,e(d.prototype))
			},
		getDoc:function(){
			return Ext.get(document)
			},
		num:function(e,d){
			e=Number(Ext.isEmpty(e)||Ext.isArray(e)||typeof e=="boolean"||(typeof e=="string"&&e.trim().length==0)?NaN:e);
			return isNaN(e)?d:e
			},
		value:function(g,d,e){
			return Ext.isEmpty(g,e)?d:g
			},
		escapeRe:function(d){
			return d.replace(/([-.*+?^${}()|[\]\/\\])/g,"\\$1")
			},
		sequence:function(h,d,g,e){
			h[d]=h[d].createSequence(g,e)
			},
		addBehaviors:function(i){
			if(!Ext.isReady){
				Ext.onReady(function(){
					Ext.addBehaviors(i)
					})
				}else{
				var e={},h,d,g;
				for(d in i){
					if((h=d.split("@"))[1]){
						g=h[0];
						if(!e[g]){
							e[g]=Ext.select(g)
							}
							e[g].on(h[1],i[d])
						}
					}
				e=null
			}
		},
getScrollBarWidth:function(g){
	if(!Ext.isReady){
		return 0
		}
		if(g===true||b===null){
		var i=Ext.getBody().createChild('<div class="x-hide-offsets" style="width:100px;height:50px;overflow:hidden;"><div style="height:200px;"></div></div>'),h=i.child("div",true);
		var e=h.offsetWidth;
		i.setStyle("overflow",(Ext.isWebKit||Ext.isGecko)?"auto":"scroll");
		var d=h.offsetWidth;
		i.remove();
		b=e-d+2
		}
		return b
	},
combine:function(){
	var g=arguments,e=g.length,k=[];
	for(var h=0;h<e;h++){
		var d=g[h];
		if(Ext.isArray(d)){
			k=k.concat(d)
			}else{
			if(d.length!==undefined&&!d.substr){
				k=k.concat(Array.prototype.slice.call(d,0))
				}else{
				k.push(d)
				}
			}
	}
	return k
},
copyTo:function(d,e,g){
	if(typeof g=="string"){
		g=g.split(/[,;\s]/)
		}
		Ext.each(g,function(h){
		if(e.hasOwnProperty(h)){
			d[h]=e[h]
			}
		},this);
return d
},
destroy:function(){
	Ext.each(arguments,function(d){
		if(d){
			if(Ext.isArray(d)){
				this.destroy.apply(this,d)
				}else{
				if(typeof d.destroy=="function"){
					d.destroy()
					}else{
					if(d.dom){
						d.remove()
						}
					}
			}
	}
},this)
},
destroyMembers:function(m,k,g,h){
	for(var l=1,e=arguments,d=e.length;l<d;l++){
		Ext.destroy(m[e[l]]);
		delete m[e[l]]
	}
	},
clean:function(d){
	var e=[];
	Ext.each(d,function(g){
		if(!!g){
			e.push(g)
			}
		});
return e
},
unique:function(d){
	var e=[],g={};

	Ext.each(d,function(h){
		if(!g[h]){
			e.push(h)
			}
			g[h]=true
		});
	return e
	},
flatten:function(d){
	var g=[];
	function e(h){
		Ext.each(h,function(i){
			if(Ext.isArray(i)){
				e(i)
				}else{
				g.push(i)
				}
			});
	return g
	}
	return e(d)
},
min:function(d,e){
	var g=d[0];
	e=e||function(i,h){
		return i<h?-1:1
		};

	Ext.each(d,function(h){
		g=e(g,h)==-1?g:h
		});
	return g
	},
max:function(d,e){
	var g=d[0];
	e=e||function(i,h){
		return i>h?1:-1
		};

	Ext.each(d,function(h){
		g=e(g,h)==1?g:h
		});
	return g
	},
mean:function(d){
	return d.length>0?Ext.sum(d)/d.length:undefined
	},
sum:function(d){
	var e=0;
	Ext.each(d,function(g){
		e+=g
		});
	return e
	},
partition:function(d,e){
	var g=[[],[]];
	Ext.each(d,function(k,l,h){
		g[(e&&e(k,l,h))||(!e&&k)?0:1].push(k)
		});
	return g
	},
invoke:function(d,e){
	var h=[],g=Array.prototype.slice.call(arguments,2);
	Ext.each(d,function(k,l){
		if(k&&typeof k[e]=="function"){
			h.push(k[e].apply(k,g))
			}else{
			h.push(undefined)
			}
		});
return h
},
pluck:function(d,g){
	var e=[];
	Ext.each(d,function(h){
		e.push(h[g])
		});
	return e
	},
zip:function(){
	var n=Ext.partition(arguments,function(i){
		return typeof i!="function"
		}),k=n[0],m=n[1][0],d=Ext.max(Ext.pluck(k,"length")),h=[];
	for(var l=0;l<d;l++){
		h[l]=[];
		if(m){
			h[l]=m.apply(m,Ext.pluck(k,l))
			}else{
			for(var g=0,e=k.length;g<e;g++){
				h[l].push(k[g][l])
				}
			}
		}
	return h
},
getCmp:function(d){
	return Ext.ComponentMgr.get(d)
	},
useShims:c.isIE6||(c.isMac&&c.isGecko2),
type:function(e){
	if(e===undefined||e===null){
		return false
		}
		if(e.htmlElement){
		return"element"
		}
		var d=typeof e;
	if(d=="object"&&e.nodeName){
		switch(e.nodeType){
			case 1:
				return"element";
			case 3:
				return(/\S/).test(e.nodeValue)?"textnode":"whitespace"
				}
			}
	if(d=="object"||d=="function"){
	switch(e.constructor){
		case Array:
			return"array";
		case RegExp:
			return"regexp";
		case Date:
			return"date"
			}
			if(typeof e.length=="number"&&typeof e.item=="function"){
		return"nodelist"
		}
	}
return d
},
intercept:function(h,d,g,e){
	h[d]=h[d].createInterceptor(g,e)
	},
callback:function(d,h,g,e){
	if(typeof d=="function"){
		if(e){
			d.defer(e,h,g||[])
			}else{
			d.apply(h,g||[])
			}
		}
}
}
}());
Ext.apply(Function.prototype,{
	createSequence:function(b,a){
		var c=this;
		return(typeof b!="function")?this:function(){
			var d=c.apply(this||window,arguments);
			b.apply(a||this||window,arguments);
			return d
			}
		}
});
Ext.applyIf(String,{
	escape:function(a){
		return a.replace(/('|\\)/g,"\\$1")
		},
	leftPad:function(d,b,c){
		var a=String(d);
		if(!c){
			c=" "
			}while(a.length<b){
			a=c+a
			}
			return a
		}
	});
String.prototype.toggle=function(b,a){
	return this==b?a:b
	};

String.prototype.trim=function(){
	var a=/^\s+|\s+$/g;
	return function(){
		return this.replace(a,"")
		}
	}();
Date.prototype.getElapsed=function(a){
	return Math.abs((a||new Date()).getTime()-this.getTime())
	};

Ext.applyIf(Number.prototype,{
	constrain:function(b,a){
		return Math.min(Math.max(this,b),a)
		}
	});
Ext.lib.Dom.getRegion=function(a){
	return Ext.lib.Region.getRegion(a)
	};

Ext.lib.Region=function(d,g,a,c){
	var e=this;
	e.top=d;
	e[1]=d;
	e.right=g;
	e.bottom=a;
	e.left=c;
	e[0]=c
	};

Ext.lib.Region.prototype={
	contains:function(b){
		var a=this;
		return(b.left>=a.left&&b.right<=a.right&&b.top>=a.top&&b.bottom<=a.bottom)
		},
	getArea:function(){
		var a=this;
		return((a.bottom-a.top)*(a.right-a.left))
		},
	intersect:function(h){
		var g=this,d=Math.max(g.top,h.top),e=Math.min(g.right,h.right),a=Math.min(g.bottom,h.bottom),c=Math.max(g.left,h.left);
		if(a>=d&&e>=c){
			return new Ext.lib.Region(d,e,a,c)
			}
		},
union:function(h){
	var g=this,d=Math.min(g.top,h.top),e=Math.max(g.right,h.right),a=Math.max(g.bottom,h.bottom),c=Math.min(g.left,h.left);
	return new Ext.lib.Region(d,e,a,c)
	},
constrainTo:function(b){
	var a=this;
	a.top=a.top.constrain(b.top,b.bottom);
	a.bottom=a.bottom.constrain(b.top,b.bottom);
	a.left=a.left.constrain(b.left,b.right);
	a.right=a.right.constrain(b.left,b.right);
	return a
	},
adjust:function(d,c,a,g){
	var e=this;
	e.top+=d;
	e.left+=c;
	e.right+=g;
	e.bottom+=a;
	return e
	}
};

Ext.lib.Region.getRegion=function(e){
	var h=Ext.lib.Dom.getXY(e),d=h[1],g=h[0]+e.offsetWidth,a=h[1]+e.offsetHeight,c=h[0];
	return new Ext.lib.Region(d,g,a,c)
	};

Ext.lib.Point=function(a,c){
	if(Ext.isArray(a)){
		c=a[1];
		a=a[0]
		}
		var b=this;
	b.x=b.right=b.left=b[0]=a;
	b.y=b.top=b.bottom=b[1]=c
	};

Ext.lib.Point.prototype=new Ext.lib.Region();
Ext.apply(Ext.DomHelper,function(){
	var e,a="afterbegin",h="afterend",i="beforebegin",d="beforeend",b=/tag|children|cn|html$/i;
	function g(n,q,p,r,m,k){
		n=Ext.getDom(n);
		var l;
		if(e.useDom){
			l=c(q,null);
			if(k){
				n.appendChild(l)
				}else{
				(m=="firstChild"?n:n.parentNode).insertBefore(l,n[m]||n)
				}
			}else{
		l=Ext.DomHelper.insertHtml(r,n,Ext.DomHelper.createHtml(q))
		}
		return p?Ext.get(l,true):l
	}
	function c(k,s){
	var m,v=document,q,t,n,u;
	if(Ext.isArray(k)){
		m=v.createDocumentFragment();
		for(var r=0,p=k.length;r<p;r++){
			c(k[r],m)
			}
		}else{
	if(typeof k=="string"){
		m=v.createTextNode(k)
		}else{
		m=v.createElement(k.tag||"div");
		q=!!m.setAttribute;
		for(var t in k){
			if(!b.test(t)){
				n=k[t];
				if(t=="cls"){
					m.className=n
					}else{
					if(q){
						m.setAttribute(t,n)
						}else{
						m[t]=n
						}
					}
			}
		}
		Ext.DomHelper.applyStyles(m,k.style);
	if((u=k.children||k.cn)){
	c(u,m)
	}else{
	if(k.html){
		m.innerHTML=k.html
		}
	}
}
}
if(s){
	s.appendChild(m)
	}
	return m
}
e={
	createTemplate:function(l){
		var k=Ext.DomHelper.createHtml(l);
		return new Ext.Template(k)
		},
	useDom:false,
	insertBefore:function(k,m,l){
		return g(k,m,l,i)
		},
	insertAfter:function(k,m,l){
		return g(k,m,l,h,"nextSibling")
		},
	insertFirst:function(k,m,l){
		return g(k,m,l,a,"firstChild")
		},
	append:function(k,m,l){
		return g(k,m,l,d,"",true)
		},
	createDom:c
};

return e
}());
Ext.apply(Ext.Template.prototype,{
	disableFormats:false,
	re:/\{([\w-]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?\}/g,
	argsRe:/^\s*['"](.*)["']\s*$/,
	compileARe:/\\/g,
	compileBRe:/(\r\n|\n)/g,
	compileCRe:/'/g,
	applyTemplate:function(b){
		var g=this,a=g.disableFormats!==true,e=Ext.util.Format,c=g;
		if(g.compiled){
			return g.compiled(b)
			}
			function d(k,n,q,l){
			if(q&&a){
				if(q.substr(0,5)=="this."){
					return c.call(q.substr(5),b[n],b)
					}else{
					if(l){
						var p=g.argsRe;
						l=l.split(",");
						for(var o=0,h=l.length;o<h;o++){
							l[o]=l[o].replace(p,"$1")
							}
							l=[b[n]].concat(l)
						}else{
						l=[b[n]]
						}
						return e[q].apply(e,l)
					}
				}else{
			return b[n]!==undefined?b[n]:""
			}
		}
	return g.html.replace(g.re,d)
	},
compile:function(){
	var me=this,fm=Ext.util.Format,useF=me.disableFormats!==true,sep=Ext.isGecko?"+":",",body;
	function fn(m,name,format,args){
		if(format&&useF){
			args=args?","+args:"";
			if(format.substr(0,5)!="this."){
				format="fm."+format+"("
				}else{
				format='this.call("'+format.substr(5)+'", ';
				args=", values"
				}
			}else{
		args="";
		format="(values['"+name+"'] == undefined ? '' : "
		}
		return"'"+sep+format+"values['"+name+"']"+args+")"+sep+"'"
	}
	if(Ext.isGecko){
	body="this.compiled = function(values){ return '"+me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn)+"';};"
	}else{
	body=["this.compiled = function(values){ return ['"];
	body.push(me.html.replace(me.compileARe,"\\\\").replace(me.compileBRe,"\\n").replace(me.compileCRe,"\\'").replace(me.re,fn));
	body.push("'].join('');};");
	body=body.join("")
	}
	eval(body);
	return me
	},
call:function(c,b,a){
	return this[c](b,a)
	}
});
Ext.Template.prototype.apply=Ext.Template.prototype.applyTemplate;
Ext.util.Functions={
	createInterceptor:function(c,b,a){
		var d=c;
		if(!Ext.isFunction(b)){
			return c
			}else{
			return function(){
				var g=this,e=arguments;
				b.target=g;
				b.method=c;
				return(b.apply(a||g||window,e)!==false)?c.apply(g||window,e):null
				}
			}
	},
createDelegate:function(c,d,b,a){
	if(!Ext.isFunction(c)){
		return c
		}
		return function(){
		var g=b||arguments;
		if(a===true){
			g=Array.prototype.slice.call(arguments,0);
			g=g.concat(b)
			}else{
			if(Ext.isNumber(a)){
				g=Array.prototype.slice.call(arguments,0);
				var e=[a,0].concat(b);
				Array.prototype.splice.apply(g,e)
				}
			}
		return c.apply(d||window,g)
	}
},
defer:function(d,c,e,b,a){
	d=Ext.util.Functions.createDelegate(d,e,b,a);
	if(c>0){
		return setTimeout(d,c)
		}
		d();
	return 0
	},
createSequence:function(c,b,a){
	if(!Ext.isFunction(b)){
		return c
		}else{
		return function(){
			var d=c.apply(this||window,arguments);
			b.apply(a||this||window,arguments);
			return d
			}
		}
}
};

Ext.defer=Ext.util.Functions.defer;
Ext.createInterceptor=Ext.util.Functions.createInterceptor;
Ext.createSequence=Ext.util.Functions.createSequence;
Ext.createDelegate=Ext.util.Functions.createDelegate;
Ext.apply(Ext.util.Observable.prototype,function(){
	function a(k){
		var i=(this.methodEvents=this.methodEvents||{})[k],d,c,g,h=this;
		if(!i){
			this.methodEvents[k]=i={};

			i.originalFn=this[k];
			i.methodName=k;
			i.before=[];
			i.after=[];
			var b=function(m,l,e){
				if((c=m.apply(l||h,e))!==undefined){
					if(typeof c=="object"){
						if(c.returnValue!==undefined){
							d=c.returnValue
							}else{
							d=c
							}
							g=!!c.cancel
						}else{
						if(c===false){
							g=true
							}else{
							d=c
							}
						}
				}
		};

this[k]=function(){
	var m=Array.prototype.slice.call(arguments,0),l;
	d=c=undefined;
	g=false;
	for(var n=0,e=i.before.length;n<e;n++){
		l=i.before[n];
		b(l.fn,l.scope,m);
		if(g){
			return d
			}
		}
	if((c=i.originalFn.apply(h,m))!==undefined){
	d=c
	}
	for(var n=0,e=i.after.length;n<e;n++){
	l=i.after[n];
	b(l.fn,l.scope,m);
	if(g){
		return d
		}
	}
return d
}
}
return i
}
return{
	beforeMethod:function(d,c,b){
		a.call(this,d).before.push({
			fn:c,
			scope:b
		})
		},
	afterMethod:function(d,c,b){
		a.call(this,d).after.push({
			fn:c,
			scope:b
		})
		},
	removeMethodListener:function(k,g,d){
		var h=this.getMethodEvent(k);
		for(var c=0,b=h.before.length;c<b;c++){
			if(h.before[c].fn==g&&h.before[c].scope==d){
				h.before.splice(c,1);
				return
			}
		}
		for(var c=0,b=h.after.length;c<b;c++){
		if(h.after[c].fn==g&&h.after[c].scope==d){
			h.after.splice(c,1);
			return
		}
	}
	},
relayEvents:function(k,e){
	var h=this;
	function g(i){
		return function(){
			return h.fireEvent.apply(h,[i].concat(Array.prototype.slice.call(arguments,0)))
			}
		}
	for(var d=0,b=e.length;d<b;d++){
	var c=e[d];
	h.events[c]=h.events[c]||true;
	k.on(c,g(c),h)
	}
},
enableBubble:function(e){
	var g=this;
	if(!Ext.isEmpty(e)){
		e=Ext.isArray(e)?e:Array.prototype.slice.call(arguments,0);
		for(var d=0,b=e.length;d<b;d++){
			var c=e[d];
			c=c.toLowerCase();
			var h=g.events[c]||true;
			if(typeof h=="boolean"){
				h=new Ext.util.Event(g,c);
				g.events[c]=h
				}
				h.bubble=true
			}
		}
	}
}
}());
Ext.util.Observable.capture=function(c,b,a){
	c.fireEvent=c.fireEvent.createInterceptor(b,a)
	};

Ext.util.Observable.observeClass=function(b,a){
	if(b){
		if(!b.fireEvent){
			Ext.apply(b,new Ext.util.Observable());
			Ext.util.Observable.capture(b.prototype,b.fireEvent,b)
			}
			if(typeof a=="object"){
			b.on(a)
			}
			return b
		}
	};

Ext.apply(Ext.EventManager,function(){
	var c,k,e,b,a=Ext.lib.Dom,i=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/,h=0,g=0,d=Ext.isWebKit?Ext.num(navigator.userAgent.match(/AppleWebKit\/(\d+)/)[1])>=525:!((Ext.isGecko&&!Ext.isWindows)||Ext.isOpera);
	return{
		doResizeEvent:function(){
			var m=a.getViewHeight(),l=a.getViewWidth();
			if(g!=m||h!=l){
				c.fire(h=l,g=m)
				}
			},
	onWindowResize:function(n,m,l){
		if(!c){
			c=new Ext.util.Event();
			k=new Ext.util.DelayedTask(this.doResizeEvent);
			Ext.EventManager.on(window,"resize",this.fireWindowResize,this)
			}
			c.addListener(n,m,l)
		},
	fireWindowResize:function(){
		if(c){
			k.delay(100)
			}
		},
onTextResize:function(o,n,l){
	if(!e){
		e=new Ext.util.Event();
		var m=new Ext.Element(document.createElement("div"));
		m.dom.className="x-text-resize";
		m.dom.innerHTML="X";
		m.appendTo(document.body);
		b=m.dom.offsetHeight;
		setInterval(function(){
			if(m.dom.offsetHeight!=b){
				e.fire(b,b=m.dom.offsetHeight)
				}
			},this.textResizeInterval)
	}
	e.addListener(o,n,l)
	},
removeResizeListener:function(m,l){
	if(c){
		c.removeListener(m,l)
		}
	},
fireResize:function(){
	if(c){
		c.fire(a.getViewWidth(),a.getViewHeight())
		}
	},
textResizeInterval:50,
ieDeferSrc:false,
getKeyEvent:function(){
	return d?"keydown":"keypress"
	},
useKeydown:d
}
}());
Ext.EventManager.on=Ext.EventManager.addListener;
Ext.apply(Ext.EventObjectImpl.prototype,{
	BACKSPACE:8,
	TAB:9,
	NUM_CENTER:12,
	ENTER:13,
	RETURN:13,
	SHIFT:16,
	CTRL:17,
	CONTROL:17,
	ALT:18,
	PAUSE:19,
	CAPS_LOCK:20,
	ESC:27,
	SPACE:32,
	PAGE_UP:33,
	PAGEUP:33,
	PAGE_DOWN:34,
	PAGEDOWN:34,
	END:35,
	HOME:36,
	LEFT:37,
	UP:38,
	RIGHT:39,
	DOWN:40,
	PRINT_SCREEN:44,
	INSERT:45,
	DELETE:46,
	ZERO:48,
	ONE:49,
	TWO:50,
	THREE:51,
	FOUR:52,
	FIVE:53,
	SIX:54,
	SEVEN:55,
	EIGHT:56,
	NINE:57,
	A:65,
	B:66,
	C:67,
	D:68,
	E:69,
	F:70,
	G:71,
	H:72,
	I:73,
	J:74,
	K:75,
	L:76,
	M:77,
	N:78,
	O:79,
	P:80,
	Q:81,
	R:82,
	S:83,
	T:84,
	U:85,
	V:86,
	W:87,
	X:88,
	Y:89,
	Z:90,
	CONTEXT_MENU:93,
	NUM_ZERO:96,
	NUM_ONE:97,
	NUM_TWO:98,
	NUM_THREE:99,
	NUM_FOUR:100,
	NUM_FIVE:101,
	NUM_SIX:102,
	NUM_SEVEN:103,
	NUM_EIGHT:104,
	NUM_NINE:105,
	NUM_MULTIPLY:106,
	NUM_PLUS:107,
	NUM_MINUS:109,
	NUM_PERIOD:110,
	NUM_DIVISION:111,
	F1:112,
	F2:113,
	F3:114,
	F4:115,
	F5:116,
	F6:117,
	F7:118,
	F8:119,
	F9:120,
	F10:121,
	F11:122,
	F12:123,
	isNavKeyPress:function(){
		var b=this,a=this.normalizeKey(b.keyCode);
		return(a>=33&&a<=40)||a==b.RETURN||a==b.TAB||a==b.ESC
		},
	isSpecialKey:function(){
		var a=this.normalizeKey(this.keyCode);
		return(this.type=="keypress"&&this.ctrlKey)||this.isNavKeyPress()||(a==this.BACKSPACE)||(a>=16&&a<=20)||(a>=44&&a<=46)
		},
	getPoint:function(){
		return new Ext.lib.Point(this.xy[0],this.xy[1])
		},
	hasModifier:function(){
		return((this.ctrlKey||this.altKey)||this.shiftKey)
		}
	});
Ext.Element.addMethods({
	swallowEvent:function(a,b){
		var d=this;
		function c(g){
			g.stopPropagation();
			if(b){
				g.preventDefault()
				}
			}
		if(Ext.isArray(a)){
		Ext.each(a,function(g){
			d.on(g,c)
			});
		return d
		}
		d.on(a,c);
	return d
	},
relayEvent:function(a,b){
	this.on(a,function(c){
		b.fireEvent(a,c)
		})
	},
clean:function(b){
	var d=this,e=d.dom,g=e.firstChild,c=-1;
	if(Ext.Element.data(e,"isCleaned")&&b!==true){
		return d
		}while(g){
		var a=g.nextSibling;
		if(g.nodeType==3&&!(/\S/.test(g.nodeValue))){
			e.removeChild(g)
			}else{
			g.nodeIndex=++c
			}
			g=a
		}
		Ext.Element.data(e,"isCleaned",true);
	return d
	},
load:function(){
	var a=this.getUpdater();
	a.update.apply(a,arguments);
	return this
	},
getUpdater:function(){
	return this.updateManager||(this.updateManager=new Ext.Updater(this))
	},
update:function(html,loadScripts,callback){
	if(!this.dom){
		return this
		}
		html=html||"";
	if(loadScripts!==true){
		this.dom.innerHTML=html;
		if(typeof callback=="function"){
			callback()
			}
			return this
		}
		var id=Ext.id(),dom=this.dom;
	html+='<span id="'+id+'"></span>';
	Ext.lib.Event.onAvailable(id,function(){
		var DOC=document,hd=DOC.getElementsByTagName("head")[0],re=/(?:<script([^>]*)?>)((\n|\r|.)*?)(?:<\/script>)/ig,srcRe=/\ssrc=([\'\"])(.*?)\1/i,typeRe=/\stype=([\'\"])(.*?)\1/i,match,attrs,srcMatch,typeMatch,el,s;
		while((match=re.exec(html))){
			attrs=match[1];
			srcMatch=attrs?attrs.match(srcRe):false;
			if(srcMatch&&srcMatch[2]){
				s=DOC.createElement("script");
				s.src=srcMatch[2];
				typeMatch=attrs.match(typeRe);
				if(typeMatch&&typeMatch[2]){
					s.type=typeMatch[2]
					}
					hd.appendChild(s)
				}else{
				if(match[2]&&match[2].length>0){
					if(window.execScript){
						window.execScript(match[2])
						}else{
						window.eval(match[2])
						}
					}
			}
	}
	el=DOC.getElementById(id);
	if(el){
	Ext.removeNode(el)
	}
	if(typeof callback=="function"){
	callback()
	}
});
dom.innerHTML=html.replace(/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,"");
return this
},
removeAllListeners:function(){
	this.removeAnchor();
	Ext.EventManager.removeAll(this.dom);
	return this
	},
createProxy:function(a,e,d){
	a=(typeof a=="object")?a:{
		tag:"div",
		cls:a
	};

	var c=this,b=e?Ext.DomHelper.append(e,a,true):Ext.DomHelper.insertBefore(c.dom,a,true);
	if(d&&c.setBox&&c.getBox){
		b.setBox(c.getBox())
		}
		return b
	}
});
Ext.Element.prototype.getUpdateManager=Ext.Element.prototype.getUpdater;
Ext.Element.addMethods({
	getAnchorXY:function(e,m,t){
		e=(e||"tl").toLowerCase();
		t=t||{};

		var l=this,b=l.dom==document.body||l.dom==document,p=t.width||b?Ext.lib.Dom.getViewWidth():l.getWidth(),i=t.height||b?Ext.lib.Dom.getViewHeight():l.getHeight(),q,a=Math.round,c=l.getXY(),n=l.getScroll(),k=b?n.left:!m?c[0]:0,g=b?n.top:!m?c[1]:0,d={
			c:[a(p*0.5),a(i*0.5)],
			t:[a(p*0.5),0],
			l:[0,a(i*0.5)],
			r:[p,a(i*0.5)],
			b:[a(p*0.5),i],
			tl:[0,0],
			bl:[0,i],
			br:[p,i],
			tr:[p,0]
			};

		q=d[e];
		return[q[0]+k,q[1]+g]
		},
	anchorTo:function(b,h,c,a,l,m){
		var i=this,e=i.dom,k=!Ext.isEmpty(l),d=function(){
			Ext.fly(e).alignTo(b,h,c,a);
			Ext.callback(m,Ext.fly(e))
			},g=this.getAnchor();
		this.removeAnchor();
		Ext.apply(g,{
			fn:d,
			scroll:k
		});
		Ext.EventManager.onWindowResize(d,null);
		if(k){
			Ext.EventManager.on(window,"scroll",d,null,{
				buffer:!isNaN(l)?l:50
				})
			}
			d.call(i);
		return i
		},
	removeAnchor:function(){
		var b=this,a=this.getAnchor();
		if(a&&a.fn){
			Ext.EventManager.removeResizeListener(a.fn);
			if(a.scroll){
				Ext.EventManager.un(window,"scroll",a.fn)
				}
				delete a.fn
			}
			return b
		},
	getAnchor:function(){
		var b=Ext.Element.data,c=this.dom;
		if(!c){
			return
		}
		var a=b(c,"_anchor");
		if(!a){
			a=b(c,"_anchor",{})
			}
			return a
		},
	getAlignToXY:function(g,B,C){
		g=Ext.get(g);
		if(!g||!g.dom){
			throw"Element.alignToXY with an element that doesn't exist"
			}
			C=C||[0,0];
		B=(!B||B=="?"?"tl-bl?":(!(/-/).test(B)&&B!==""?"tl-"+B:B||"tl-bl")).toLowerCase();
		var L=this,I=L.dom,N,M,q,n,t,G,z,u=Ext.lib.Dom.getViewWidth()-10,H=Ext.lib.Dom.getViewHeight()-10,b,i,k,l,v,A,O=document,K=O.documentElement,s=O.body,F=(K.scrollLeft||s.scrollLeft||0)+5,E=(K.scrollTop||s.scrollTop||0)+5,J=false,e="",a="",D=B.match(/^([a-z]+)-([a-z]+)(\?)?$/);
		if(!D){
			throw"Element.alignTo with an invalid alignment "+B
			}
			e=D[1];
		a=D[2];
		J=!!D[3];
		N=L.getAnchorXY(e,true);
		M=g.getAnchorXY(a,false);
		q=M[0]-N[0]+C[0];
		n=M[1]-N[1]+C[1];
		if(J){
			t=L.getWidth();
			G=L.getHeight();
			z=g.getRegion();
			b=e.charAt(0);
			i=e.charAt(e.length-1);
			k=a.charAt(0);
			l=a.charAt(a.length-1);
			v=((b=="t"&&k=="b")||(b=="b"&&k=="t"));
			A=((i=="r"&&l=="l")||(i=="l"&&l=="r"));
			if(q+t>u+F){
				q=A?z.left-t:u+F-t
				}
				if(q<F){
				q=A?z.right:F
				}
				if(n+G>H+E){
				n=v?z.top-G:H+E-G
				}
				if(n<E){
				n=v?z.bottom:E
				}
			}
		return[q,n]
	},
alignTo:function(c,a,e,b){
	var d=this;
	return d.setXY(d.getAlignToXY(c,a,e),d.preanim&&!!b?d.preanim(arguments,3):false)
	},
adjustForConstraints:function(c,a,b){
	return this.getConstrainToXY(a||document,false,b,c)||c
	},
getConstrainToXY:function(b,a,c,e){
	var d={
		top:0,
		left:0,
		bottom:0,
		right:0
	};

	return function(i,B,m,o){
		i=Ext.get(i);
		m=m?Ext.applyIf(m,d):d;
		var A,E,z=0,v=0;
		if(i.dom==document.body||i.dom==document){
			A=Ext.lib.Dom.getViewWidth();
			E=Ext.lib.Dom.getViewHeight()
			}else{
			A=i.dom.clientWidth;
			E=i.dom.clientHeight;
			if(!B){
				var u=i.getXY();
				z=u[0];
				v=u[1]
				}
			}
		var t=i.getScroll();
	z+=m.left+t.left;
	v+=m.top+t.top;
	A-=m.right;
	E-=m.bottom;
	var C=z+A,g=v+E,k=o||(!B?this.getXY():[this.getLeft(true),this.getTop(true)]),q=k[0],p=k[1],l=this.getConstrainOffset(),r=this.dom.offsetWidth+l,D=this.dom.offsetHeight+l;
	var n=false;
	if((q+r)>C){
		q=C-r;
		n=true
		}
		if((p+D)>g){
		p=g-D;
		n=true
		}
		if(q<z){
		q=z;
		n=true
		}
		if(p<v){
		p=v;
		n=true
		}
		return n?[q,p]:false
	}
}(),
getConstrainOffset:function(){
	return 0
	},
getCenterXY:function(){
	return this.getAlignToXY(document,"c-c")
	},
center:function(a){
	return this.alignTo(a||document,"c-c")
	}
});
Ext.Element.addMethods({
	select:function(a,b){
		return Ext.Element.select(a,b,this.dom)
		}
	});
Ext.apply(Ext.Element.prototype,function(){
	var c=Ext.getDom,a=Ext.get,b=Ext.DomHelper;
	return{
		insertSibling:function(i,g,h){
			var k=this,e,d=(g||"before").toLowerCase()=="after",l;
			if(Ext.isArray(i)){
				l=k;
				Ext.each(i,function(m){
					e=Ext.fly(l,"_internal").insertSibling(m,g,h);
					if(d){
						l=e
						}
					});
			return e
			}
			i=i||{};

		if(i.nodeType||i.dom){
			e=k.dom.parentNode.insertBefore(c(i),d?k.dom.nextSibling:k.dom);
			if(!h){
				e=a(e)
				}
			}else{
		if(d&&!k.dom.nextSibling){
			e=b.append(k.dom.parentNode,i,!h)
			}else{
			e=b[d?"insertAfter":"insertBefore"](k.dom,i,!h)
			}
		}
	return e
}
}
}());
Ext.Element.boxMarkup='<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div><div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div><div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';
Ext.Element.addMethods(function(){
	var a="_internal",b=/(\d+\.?\d+)px/;
	return{
		applyStyles:function(c){
			Ext.DomHelper.applyStyles(this.dom,c);
			return this
			},
		getStyles:function(){
			var c={};

			Ext.each(arguments,function(d){
				c[d]=this.getStyle(d)
				},this);
			return c
			},
		setOverflow:function(c){
			var d=this.dom;
			if(c=="auto"&&Ext.isMac&&Ext.isGecko2){
				d.style.overflow="hidden";
				(function(){
					d.style.overflow="auto"
					}).defer(1)
				}else{
				d.style.overflow=c
				}
			},
	boxWrap:function(c){
		c=c||"x-box";
		var d=Ext.get(this.insertHtml("beforeBegin","<div class='"+c+"'>"+String.format(Ext.Element.boxMarkup,c)+"</div>"));
		Ext.DomQuery.selectNode("."+c+"-mc",d.dom).appendChild(this.dom);
		return d
		},
	setSize:function(e,c,d){
		var g=this;
		if(typeof e=="object"){
			c=e.height;
			e=e.width
			}
			e=g.adjustWidth(e);
		c=g.adjustHeight(c);
		if(!d||!g.anim){
			g.dom.style.width=g.addUnits(e);
			g.dom.style.height=g.addUnits(c)
			}else{
			g.anim({
				width:{
					to:e
				},
				height:{
					to:c
				}
			},g.preanim(arguments,2))
		}
		return g
	},
getComputedHeight:function(){
	var d=this,c=Math.max(d.dom.offsetHeight,d.dom.clientHeight);
	if(!c){
		c=parseFloat(d.getStyle("height"))||0;
		if(!d.isBorderBox()){
			c+=d.getFrameWidth("tb")
			}
		}
	return c
},
getComputedWidth:function(){
	var c=Math.max(this.dom.offsetWidth,this.dom.clientWidth);
	if(!c){
		c=parseFloat(this.getStyle("width"))||0;
		if(!this.isBorderBox()){
			c+=this.getFrameWidth("lr")
			}
		}
	return c
},
getFrameWidth:function(d,c){
	return c&&this.isBorderBox()?0:(this.getPadding(d)+this.getBorderWidth(d))
	},
addClassOnOver:function(c){
	this.hover(function(){
		Ext.fly(this,a).addClass(c)
		},function(){
		Ext.fly(this,a).removeClass(c)
		});
	return this
	},
addClassOnFocus:function(c){
	this.on("focus",function(){
		Ext.fly(this,a).addClass(c)
		},this.dom);
	this.on("blur",function(){
		Ext.fly(this,a).removeClass(c)
		},this.dom);
	return this
	},
addClassOnClick:function(c){
	var d=this.dom;
	this.on("mousedown",function(){
		Ext.fly(d,a).addClass(c);
		var g=Ext.getDoc(),e=function(){
			Ext.fly(d,a).removeClass(c);
			g.removeListener("mouseup",e)
			};

		g.on("mouseup",e)
		});
	return this
	},
getViewSize:function(){
	var g=document,h=this.dom,c=(h==g||h==g.body);
	if(c){
		var e=Ext.lib.Dom;
		return{
			width:e.getViewWidth(),
			height:e.getViewHeight()
			}
		}else{
	return{
		width:h.clientWidth,
		height:h.clientHeight
		}
	}
},
getStyleSize:function(){
	var k=this,c,i,m=document,n=this.dom,e=(n==m||n==m.body),g=n.style;
	if(e){
		var l=Ext.lib.Dom;
		return{
			width:l.getViewWidth(),
			height:l.getViewHeight()
			}
		}
	if(g.width&&g.width!="auto"){
	c=parseFloat(g.width);
	if(k.isBorderBox()){
		c-=k.getFrameWidth("lr")
		}
	}
if(g.height&&g.height!="auto"){
	i=parseFloat(g.height);
	if(k.isBorderBox()){
		i-=k.getFrameWidth("tb")
		}
	}
return{
	width:c||k.getWidth(true),
	height:i||k.getHeight(true)
	}
},
getSize:function(c){
	return{
		width:this.getWidth(c),
		height:this.getHeight(c)
		}
	},
repaint:function(){
	var c=this.dom;
	this.addClass("x-repaint");
	setTimeout(function(){
		Ext.fly(c).removeClass("x-repaint")
		},1);
	return this
	},
unselectable:function(){
	this.dom.unselectable="on";
	return this.swallowEvent("selectstart",true).applyStyles("-moz-user-select:none;-khtml-user-select:none;").addClass("x-unselectable")
	},
getMargins:function(d){
	var e=this,c,g={
		t:"top",
		l:"left",
		r:"right",
		b:"bottom"
	},h={};

	if(!d){
		for(c in e.margins){
			h[g[c]]=parseFloat(e.getStyle(e.margins[c]))||0
			}
			return h
		}else{
		return e.addStyles.call(e,d,e.margins)
		}
	}
}
}());
Ext.Element.addMethods({
	setBox:function(e,g,b){
		var d=this,a=e.width,c=e.height;
		if((g&&!d.autoBoxAdjust)&&!d.isBorderBox()){
			a-=(d.getBorderWidth("lr")+d.getPadding("lr"));
			c-=(d.getBorderWidth("tb")+d.getPadding("tb"))
			}
			d.setBounds(e.x,e.y,a,c,d.animTest.call(d,arguments,b,2));
		return d
		},
	getBox:function(k,q){
		var n=this,x,e,p,d=n.getBorderWidth,s=n.getPadding,g,a,v,o;
		if(!q){
			x=n.getXY()
			}else{
			e=parseInt(n.getStyle("left"),10)||0;
			p=parseInt(n.getStyle("top"),10)||0;
			x=[e,p]
			}
			var c=n.dom,u=c.offsetWidth,i=c.offsetHeight,m;
		if(!k){
			m={
				x:x[0],
				y:x[1],
				0:x[0],
				1:x[1],
				width:u,
				height:i
			}
		}else{
		g=d.call(n,"l")+s.call(n,"l");
		a=d.call(n,"r")+s.call(n,"r");
		v=d.call(n,"t")+s.call(n,"t");
		o=d.call(n,"b")+s.call(n,"b");
		m={
			x:x[0]+g,
			y:x[1]+v,
			0:x[0]+g,
			1:x[1]+v,
			width:u-(g+a),
			height:i-(v+o)
			}
		}
	m.right=m.x+m.width;
m.bottom=m.y+m.height;
return m
},
move:function(k,b,c){
	var g=this,n=g.getXY(),l=n[0],i=n[1],d=[l-b,i],m=[l+b,i],h=[l,i-b],a=[l,i+b],e={
		l:d,
		left:d,
		r:m,
		right:m,
		t:h,
		top:h,
		up:h,
		b:a,
		bottom:a,
		down:a
	};

	k=k.toLowerCase();
	g.moveTo(e[k][0],e[k][1],g.animTest.call(g,arguments,c,2))
	},
setLeftTop:function(d,c){
	var b=this,a=b.dom.style;
	a.left=b.addUnits(d);
	a.top=b.addUnits(c);
	return b
	},
getRegion:function(){
	return Ext.lib.Dom.getRegion(this.dom)
	},
setBounds:function(b,g,d,a,c){
	var e=this;
	if(!c||!e.anim){
		e.setSize(d,a);
		e.setLocation(b,g)
		}else{
		e.anim({
			points:{
				to:[b,g]
				},
			width:{
				to:e.adjustWidth(d)
				},
			height:{
				to:e.adjustHeight(a)
				}
			},e.preanim(arguments,4),"motion")
	}
	return e
},
setRegion:function(b,a){
	return this.setBounds(b.left,b.top,b.right-b.left,b.bottom-b.top,this.animTest.call(this,arguments,a,1))
	}
});
Ext.Element.addMethods({
	scrollTo:function(b,d,a){
		var e=/top/i.test(b),c=this,g=c.dom,h;
		if(!a||!c.anim){
			h="scroll"+(e?"Top":"Left");
			g[h]=d
			}else{
			h="scroll"+(e?"Left":"Top");
			c.anim({
				scroll:{
					to:e?[g[h],d]:[d,g[h]]
					}
				},c.preanim(arguments,2),"scroll")
		}
		return c
	},
scrollIntoView:function(e,i){
	var q=Ext.getDom(e)||Ext.getBody().dom,h=this.dom,g=this.getOffsetsTo(q),m=g[0]+q.scrollLeft,v=g[1]+q.scrollTop,s=v+h.offsetHeight,d=m+h.offsetWidth,a=q.clientHeight,n=parseInt(q.scrollTop,10),u=parseInt(q.scrollLeft,10),k=n+a,p=u+q.clientWidth;
	if(h.offsetHeight>a||v<n){
		q.scrollTop=v
		}else{
		if(s>k){
			q.scrollTop=s-a
			}
		}
	q.scrollTop=q.scrollTop;
if(i!==false){
	if(h.offsetWidth>q.clientWidth||m<u){
		q.scrollLeft=m
		}else{
		if(d>p){
			q.scrollLeft=d-q.clientWidth
			}
		}
	q.scrollLeft=q.scrollLeft
}
return this
},
scrollChildIntoView:function(b,a){
	Ext.fly(b,"_scrollChildIntoView").scrollIntoView(this,a)
	},
scroll:function(n,b,d){
	if(!this.isScrollable()){
		return false
		}
		var e=this.dom,g=e.scrollLeft,q=e.scrollTop,o=e.scrollWidth,m=e.scrollHeight,i=e.clientWidth,a=e.clientHeight,c=false,p,k={
		l:Math.min(g+b,o-i),
		r:p=Math.max(g-b,0),
		t:Math.max(q-b,0),
		b:Math.min(q+b,m-a)
		};

	k.d=k.b;
	k.u=k.t;
	n=n.substr(0,1);
	if((p=k[n])>-1){
		c=true;
		this.scrollTo(n=="l"||n=="r"?"left":"top",p,this.preanim(arguments,2))
		}
		return c
	}
});
Ext.Element.addMethods(function(){
	var d="visibility",b="display",a="hidden",h="none",c="x-masked",g="x-masked-relative",e=Ext.Element.data;
	return{
		isVisible:function(i){
			var k=!this.isStyle(d,a)&&!this.isStyle(b,h),l=this.dom.parentNode;
			if(i!==true||!k){
				return k
				}while(l&&!(/^body/i.test(l.tagName))){
				if(!Ext.fly(l,"_isVisible").isVisible()){
					return false
					}
					l=l.parentNode
				}
				return true
			},
		isDisplayed:function(){
			return !this.isStyle(b,h)
			},
		enableDisplayMode:function(i){
			this.setVisibilityMode(Ext.Element.DISPLAY);
			if(!Ext.isEmpty(i)){
				e(this.dom,"originalDisplay",i)
				}
				return this
			},
		mask:function(k,o){
			var q=this,m=q.dom,p=Ext.DomHelper,n="ext-el-mask-msg",i,r;
			if(!(/^body/i.test(m.tagName)&&q.getStyle("position")=="static")){
				q.addClass(g)
				}
				if(i=e(m,"maskMsg")){
				i.remove()
				}
				if(i=e(m,"mask")){
				i.remove()
				}
				r=p.append(m,{
				cls:"ext-el-mask"
			},true);
			e(m,"mask",r);
			q.addClass(c);
			r.setDisplayed(true);
			if(typeof k=="string"){
				var l=p.append(m,{
					cls:n,
					cn:{
						tag:"div"
					}
				},true);
			e(m,"maskMsg",l);
			l.dom.className=o?n+" "+o:n;
			l.dom.firstChild.innerHTML=k;
			l.setDisplayed(true);
			l.center(q)
			}
			if(Ext.isIE&&!(Ext.isIE7&&Ext.isStrict)&&q.getStyle("height")=="auto"){
			r.setSize(undefined,q.getHeight())
			}
			return r
		},
	unmask:function(){
		var l=this,m=l.dom,i=e(m,"mask"),k=e(m,"maskMsg");
		if(i){
			if(k){
				k.remove();
				e(m,"maskMsg",undefined)
				}
				i.remove();
			e(m,"mask",undefined);
			l.removeClass([c,g])
			}
		},
isMasked:function(){
	var i=e(this.dom,"mask");
	return i&&i.isVisible()
	},
createShim:function(){
	var i=document.createElement("iframe"),k;
	i.frameBorder="0";
	i.className="ext-shim";
	i.src=Ext.SSL_SECURE_URL;
	k=Ext.get(this.dom.parentNode.insertBefore(i,this.dom));
	k.autoBoxAdjust=false;
	return k
	}
}
}());
Ext.Element.addMethods({
	addKeyListener:function(b,d,c){
		var a;
		if(typeof b!="object"||Ext.isArray(b)){
			a={
				key:b,
				fn:d,
				scope:c
			}
		}else{
		a={
			key:b.key,
			shift:b.shift,
			ctrl:b.ctrl,
			alt:b.alt,
			fn:d,
			scope:c
		}
	}
	return new Ext.KeyMap(this,a)
	},
addKeyMap:function(a){
	return new Ext.KeyMap(this,a)
	}
});
Ext.CompositeElementLite.importElementMethods();
Ext.apply(Ext.CompositeElementLite.prototype,{
	addElements:function(c,a){
		if(!c){
			return this
			}
			if(typeof c=="string"){
			c=Ext.Element.selectorFunction(c,a)
			}
			var b=this.elements;
		Ext.each(c,function(d){
			b.push(Ext.get(d))
			});
		return this
		},
	first:function(){
		return this.item(0)
		},
	last:function(){
		return this.item(this.getCount()-1)
		},
	contains:function(a){
		return this.indexOf(a)!=-1
		},
	removeElement:function(d,e){
		var c=this,a=this.elements,b;
		Ext.each(d,function(g){
			if((b=(a[g]||a[g=c.indexOf(g)]))){
				if(e){
					if(b.dom){
						b.remove()
						}else{
						Ext.removeNode(b)
						}
					}
				a.splice(g,1)
			}
		});
return this
}
});
Ext.CompositeElement=Ext.extend(Ext.CompositeElementLite,{
	constructor:function(b,a){
		this.elements=[];
		this.add(b,a)
		},
	getElement:function(a){
		return a
		},
	transformElement:function(a){
		return Ext.get(a)
		}
	});
Ext.Element.select=function(a,d,b){
	var c;
	if(typeof a=="string"){
		c=Ext.Element.selectorFunction(a,b)
		}else{
		if(a.length!==undefined){
			c=a
			}else{
			throw"Invalid selector"
			}
		}
	return(d===true)?new Ext.CompositeElement(c):new Ext.CompositeElementLite(c)
	};

Ext.select=Ext.Element.select;
Ext.UpdateManager=Ext.Updater=Ext.extend(Ext.util.Observable,function(){
	var b="beforeupdate",d="update",c="failure";
	function a(h){
		var i=this;
		i.transaction=null;
		if(h.argument.form&&h.argument.reset){
			try{
				h.argument.form.reset()
				}catch(k){}
		}
		if(i.loadScripts){
		i.renderer.render(i.el,h,i,g.createDelegate(i,[h]))
		}else{
		i.renderer.render(i.el,h,i);
		g.call(i,h)
		}
	}
function g(h,i,k){
	this.fireEvent(i||d,this.el,h);
	if(Ext.isFunction(h.argument.callback)){
		h.argument.callback.call(h.argument.scope,this.el,Ext.isEmpty(k)?true:false,h,h.argument.options)
		}
	}
function e(h){
	g.call(this,h,c,!!(this.transaction=null))
	}
	return{
	constructor:function(i,h){
		var k=this;
		i=Ext.get(i);
		if(!h&&i.updateManager){
			return i.updateManager
			}
			k.el=i;
		k.defaultUrl=null;
		k.addEvents(b,d,c);
		Ext.apply(k,Ext.Updater.defaults);
		k.transaction=null;
		k.refreshDelegate=k.refresh.createDelegate(k);
		k.updateDelegate=k.update.createDelegate(k);
		k.formUpdateDelegate=(k.formUpdate||function(){}).createDelegate(k);
		k.renderer=k.renderer||k.getDefaultRenderer();
		Ext.Updater.superclass.constructor.call(k)
		},
	setRenderer:function(h){
		this.renderer=h
		},
	getRenderer:function(){
		return this.renderer
		},
	getDefaultRenderer:function(){
		return new Ext.Updater.BasicRenderer()
		},
	setDefaultUrl:function(h){
		this.defaultUrl=h
		},
	getEl:function(){
		return this.el
		},
	update:function(i,p,q,m){
		var l=this,h,k;
		if(l.fireEvent(b,l.el,i,p)!==false){
			if(Ext.isObject(i)){
				h=i;
				i=h.url;
				p=p||h.params;
				q=q||h.callback;
				m=m||h.discardUrl;
				k=h.scope;
				if(!Ext.isEmpty(h.nocache)){
					l.disableCaching=h.nocache
					}
					if(!Ext.isEmpty(h.text)){
					l.indicatorText='<div class="loading-indicator">'+h.text+"</div>"
					}
					if(!Ext.isEmpty(h.scripts)){
					l.loadScripts=h.scripts
					}
					if(!Ext.isEmpty(h.timeout)){
					l.timeout=h.timeout
					}
				}
			l.showLoading();
		if(!m){
			l.defaultUrl=i
			}
			if(Ext.isFunction(i)){
			i=i.call(l)
			}
			var n=Ext.apply({},{
			url:i,
			params:(Ext.isFunction(p)&&k)?p.createDelegate(k):p,
			success:a,
			failure:e,
			scope:l,
			callback:undefined,
			timeout:(l.timeout*1000),
			disableCaching:l.disableCaching,
			argument:{
				options:h,
				url:i,
				form:null,
				callback:q,
				scope:k||window,
				params:p
			}
		},h);
	l.transaction=Ext.Ajax.request(n)
	}
},
formUpdate:function(l,h,k,m){
	var i=this;
	if(i.fireEvent(b,i.el,l,h)!==false){
		if(Ext.isFunction(h)){
			h=h.call(i)
			}
			l=Ext.getDom(l);
		i.transaction=Ext.Ajax.request({
			form:l,
			url:h,
			success:a,
			failure:e,
			scope:i,
			timeout:(i.timeout*1000),
			argument:{
				url:h,
				form:l,
				callback:m,
				reset:k
			}
		});
	i.showLoading.defer(1,i)
	}
},
startAutoRefresh:function(i,k,m,n,h){
	var l=this;
	if(h){
		l.update(k||l.defaultUrl,m,n,true)
		}
		if(l.autoRefreshProcId){
		clearInterval(l.autoRefreshProcId)
		}
		l.autoRefreshProcId=setInterval(l.update.createDelegate(l,[k||l.defaultUrl,m,n,true]),i*1000)
	},
stopAutoRefresh:function(){
	if(this.autoRefreshProcId){
		clearInterval(this.autoRefreshProcId);
		delete this.autoRefreshProcId
		}
	},
isAutoRefreshing:function(){
	return !!this.autoRefreshProcId
	},
showLoading:function(){
	if(this.showLoadIndicator){
		this.el.dom.innerHTML=this.indicatorText
		}
	},
abort:function(){
	if(this.transaction){
		Ext.Ajax.abort(this.transaction)
		}
	},
isUpdating:function(){
	return this.transaction?Ext.Ajax.isLoading(this.transaction):false
	},
refresh:function(h){
	if(this.defaultUrl){
		this.update(this.defaultUrl,null,h,true)
		}
	}
}
}());
Ext.Updater.defaults={
	timeout:30,
	disableCaching:false,
	showLoadIndicator:true,
	indicatorText:'<div class="loading-indicator">Loading...</div>',
	loadScripts:false,
	sslBlankUrl:Ext.SSL_SECURE_URL
	};

Ext.Updater.updateElement=function(d,c,e,b){
	var a=Ext.get(d).getUpdater();
	Ext.apply(a,b);
	a.update(c,e,b?b.callback:null)
	};

Ext.Updater.BasicRenderer=function(){};

Ext.Updater.BasicRenderer.prototype={
	render:function(c,a,b,d){
		c.update(a.responseText,b.loadScripts,d)
		}
	};
(function(){
	Date.useStrict=false;
	function b(d){
		var c=Array.prototype.slice.call(arguments,1);
		return d.replace(/\{(\d+)\}/g,function(e,g){
			return c[g]
			})
		}
		Date.formatCodeToRegex=function(d,c){
		var e=Date.parseCodes[d];
		if(e){
			e=typeof e=="function"?e():e;
			Date.parseCodes[d]=e
			}
			return e?Ext.applyIf({
			c:e.c?b(e.c,c||"{0}"):e.c
			},e):{
			g:0,
			c:null,
			s:Ext.escapeRe(d)
			}
		};

var a=Date.formatCodeToRegex;
Ext.apply(Date,{
	parseFunctions:{
		"M$":function(d,c){
			var e=new RegExp("\\/Date\\(([-+])?(\\d+)(?:[+-]\\d{4})?\\)\\/");
			var g=(d||"").match(e);
			return g?new Date(((g[1]||"")+g[2])*1):null
			}
		},
parseRegexes:[],
formatFunctions:{
	"M$":function(){
		return"\\/Date("+this.getTime()+")\\/"
		}
	},
y2kYear:50,
MILLI:"ms",
SECOND:"s",
MINUTE:"mi",
HOUR:"h",
DAY:"d",
MONTH:"mo",
YEAR:"y",
defaults:{},
dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],
monthNumbers:{
	Jan:0,
	Feb:1,
	Mar:2,
	Apr:3,
	May:4,
	Jun:5,
	Jul:6,
	Aug:7,
	Sep:8,
	Oct:9,
	Nov:10,
	Dec:11
},
getShortMonthName:function(c){
	return Date.monthNames[c].substring(0,3)
	},
getShortDayName:function(c){
	return Date.dayNames[c].substring(0,3)
	},
getMonthNumber:function(c){
	return Date.monthNumbers[c.substring(0,1).toUpperCase()+c.substring(1,3).toLowerCase()]
	},
formatCodes:{
	d:"String.leftPad(this.getDate(), 2, '0')",
	D:"Date.getShortDayName(this.getDay())",
	j:"this.getDate()",
	l:"Date.dayNames[this.getDay()]",
	N:"(this.getDay() ? this.getDay() : 7)",
	S:"this.getSuffix()",
	w:"this.getDay()",
	z:"this.getDayOfYear()",
	W:"String.leftPad(this.getWeekOfYear(), 2, '0')",
	F:"Date.monthNames[this.getMonth()]",
	m:"String.leftPad(this.getMonth() + 1, 2, '0')",
	M:"Date.getShortMonthName(this.getMonth())",
	n:"(this.getMonth() + 1)",
	t:"this.getDaysInMonth()",
	L:"(this.isLeapYear() ? 1 : 0)",
	o:"(this.getFullYear() + (this.getWeekOfYear() == 1 && this.getMonth() > 0 ? +1 : (this.getWeekOfYear() >= 52 && this.getMonth() < 11 ? -1 : 0)))",
	Y:"String.leftPad(this.getFullYear(), 4, '0')",
	y:"('' + this.getFullYear()).substring(2, 4)",
	a:"(this.getHours() < 12 ? 'am' : 'pm')",
	A:"(this.getHours() < 12 ? 'AM' : 'PM')",
	g:"((this.getHours() % 12) ? this.getHours() % 12 : 12)",
	G:"this.getHours()",
	h:"String.leftPad((this.getHours() % 12) ? this.getHours() % 12 : 12, 2, '0')",
	H:"String.leftPad(this.getHours(), 2, '0')",
	i:"String.leftPad(this.getMinutes(), 2, '0')",
	s:"String.leftPad(this.getSeconds(), 2, '0')",
	u:"String.leftPad(this.getMilliseconds(), 3, '0')",
	O:"this.getGMTOffset()",
	P:"this.getGMTOffset(true)",
	T:"this.getTimezone()",
	Z:"(this.getTimezoneOffset() * -60)",
	c:function(){
		for(var m="Y-m-dTH:i:sP",h=[],g=0,d=m.length;g<d;++g){
			var k=m.charAt(g);
			h.push(k=="T"?"'T'":Date.getFormatCode(k))
			}
			return h.join(" + ")
		},
	U:"Math.round(this.getTime() / 1000)"
},
isValid:function(p,c,o,l,g,k,e){
	l=l||0;
	g=g||0;
	k=k||0;
	e=e||0;
	var n=new Date(p<100?100:p,c-1,o,l,g,k,e).add(Date.YEAR,p<100?p-100:0);
	return p==n.getFullYear()&&c==n.getMonth()+1&&o==n.getDate()&&l==n.getHours()&&g==n.getMinutes()&&k==n.getSeconds()&&e==n.getMilliseconds()
	},
parseDate:function(d,g,c){
	var e=Date.parseFunctions;
	if(e[g]==null){
		Date.createParser(g)
		}
		return e[g](d,Ext.isDefined(c)?c:Date.useStrict)
	},
getFormatCode:function(d){
	var c=Date.formatCodes[d];
	if(c){
		c=typeof c=="function"?c():c;
		Date.formatCodes[d]=c
		}
		return c||("'"+String.escape(d)+"'")
	},
createFormat:function(h){
	var g=[],c=false,e="";
	for(var d=0;d<h.length;++d){
		e=h.charAt(d);
		if(!c&&e=="\\"){
			c=true
			}else{
			if(c){
				c=false;
				g.push("'"+String.escape(e)+"'")
				}else{
				g.push(Date.getFormatCode(e))
				}
			}
	}
	Date.formatFunctions[h]=new Function("return "+g.join("+"))
	},
createParser:function(){
	var c=["var dt, y, m, d, h, i, s, ms, o, z, zz, u, v,","def = Date.defaults,","results = String(input).match(Date.parseRegexes[{0}]);","if(results){","{1}","if(u != null){","v = new Date(u * 1000);","}else{","dt = (new Date()).clearTime();","y = Ext.num(y, Ext.num(def.y, dt.getFullYear()));","m = Ext.num(m, Ext.num(def.m - 1, dt.getMonth()));","d = Ext.num(d, Ext.num(def.d, dt.getDate()));","h  = Ext.num(h, Ext.num(def.h, dt.getHours()));","i  = Ext.num(i, Ext.num(def.i, dt.getMinutes()));","s  = Ext.num(s, Ext.num(def.s, dt.getSeconds()));","ms = Ext.num(ms, Ext.num(def.ms, dt.getMilliseconds()));","if(z >= 0 && y >= 0){","v = new Date(y < 100 ? 100 : y, 0, 1, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","v = !strict? v : (strict === true && (z <= 364 || (v.isLeapYear() && z <= 365))? v.add(Date.DAY, z) : null);","}else if(strict === true && !Date.isValid(y, m + 1, d, h, i, s, ms)){","v = null;","}else{","v = new Date(y < 100 ? 100 : y, m, d, h, i, s, ms).add(Date.YEAR, y < 100 ? y - 100 : 0);","}","}","}","if(v){","if(zz != null){","v = v.add(Date.SECOND, -v.getTimezoneOffset() * 60 - zz);","}else if(o){","v = v.add(Date.MINUTE, -v.getTimezoneOffset() + (sn == '+'? -1 : 1) * (hr * 60 + mn));","}","}","return v;"].join("\n");
	return function(n){
		var e=Date.parseRegexes.length,p=1,g=[],m=[],l=false,d="",k=0,h,o;
		for(;k<n.length;++k){
			d=n.charAt(k);
			if(!l&&d=="\\"){
				l=true
				}else{
				if(l){
					l=false;
					m.push(String.escape(d))
					}else{
					h=a(d,p);
					p+=h.g;
					m.push(h.s);
					if(h.g&&h.c){
						if(h.calcLast){
							o=h.c
							}else{
							g.push(h.c)
							}
						}
				}
		}
	}
if(o){
	g.push(o)
	}
	Date.parseRegexes[e]=new RegExp("^"+m.join("")+"$","i");
Date.parseFunctions[n]=new Function("input","strict",b(c,e,g.join("")))
}
}(),
parseCodes:{
	d:{
		g:1,
		c:"d = parseInt(results[{0}], 10);\n",
		s:"(\\d{2})"
	},
	j:{
		g:1,
		c:"d = parseInt(results[{0}], 10);\n",
		s:"(\\d{1,2})"
	},
	D:function(){
		for(var c=[],d=0;d<7;c.push(Date.getShortDayName(d)),++d){}
		return{
			g:0,
			c:null,
			s:"(?:"+c.join("|")+")"
			}
		},
l:function(){
	return{
		g:0,
		c:null,
		s:"(?:"+Date.dayNames.join("|")+")"
		}
	},
N:{
	g:0,
	c:null,
	s:"[1-7]"
},
S:{
	g:0,
	c:null,
	s:"(?:st|nd|rd|th)"
},
w:{
	g:0,
	c:null,
	s:"[0-6]"
},
z:{
	g:1,
	c:"z = parseInt(results[{0}], 10);\n",
	s:"(\\d{1,3})"
},
W:{
	g:0,
	c:null,
	s:"(?:\\d{2})"
},
F:function(){
	return{
		g:1,
		c:"m = parseInt(Date.getMonthNumber(results[{0}]), 10);\n",
		s:"("+Date.monthNames.join("|")+")"
		}
	},
M:function(){
	for(var c=[],d=0;d<12;c.push(Date.getShortMonthName(d)),++d){}
	return Ext.applyIf({
		s:"("+c.join("|")+")"
		},a("F"))
	},
m:{
	g:1,
	c:"m = parseInt(results[{0}], 10) - 1;\n",
	s:"(\\d{2})"
},
n:{
	g:1,
	c:"m = parseInt(results[{0}], 10) - 1;\n",
	s:"(\\d{1,2})"
},
t:{
	g:0,
	c:null,
	s:"(?:\\d{2})"
},
L:{
	g:0,
	c:null,
	s:"(?:1|0)"
},
o:function(){
	return a("Y")
	},
Y:{
	g:1,
	c:"y = parseInt(results[{0}], 10);\n",
	s:"(\\d{4})"
},
y:{
	g:1,
	c:"var ty = parseInt(results[{0}], 10);\ny = ty > Date.y2kYear ? 1900 + ty : 2000 + ty;\n",
	s:"(\\d{1,2})"
},
a:function(){
	return a("A")
	},
A:{
	calcLast:true,
	g:1,
	c:"if (/(am)/i.test(results[{0}])) {\nif (!h || h == 12) { h = 0; }\n} else { if (!h || h < 12) { h = (h || 0) + 12; }}",
	s:"(AM|PM|am|pm)"
},
g:function(){
	return a("G")
	},
G:{
	g:1,
	c:"h = parseInt(results[{0}], 10);\n",
	s:"(\\d{1,2})"
},
h:function(){
	return a("H")
	},
H:{
	g:1,
	c:"h = parseInt(results[{0}], 10);\n",
	s:"(\\d{2})"
},
i:{
	g:1,
	c:"i = parseInt(results[{0}], 10);\n",
	s:"(\\d{2})"
},
s:{
	g:1,
	c:"s = parseInt(results[{0}], 10);\n",
	s:"(\\d{2})"
},
u:{
	g:1,
	c:"ms = results[{0}]; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n",
	s:"(\\d+)"
},
O:{
	g:1,
	c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(3,5) / 60),","mn = o.substring(3,5) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),
	s:"([+-]\\d{4})"
},
P:{
	g:1,
	c:["o = results[{0}];","var sn = o.substring(0,1),","hr = o.substring(1,3)*1 + Math.floor(o.substring(4,6) / 60),","mn = o.substring(4,6) % 60;","o = ((-12 <= (hr*60 + mn)/60) && ((hr*60 + mn)/60 <= 14))? (sn + String.leftPad(hr, 2, '0') + String.leftPad(mn, 2, '0')) : null;\n"].join("\n"),
	s:"([+-]\\d{2}:\\d{2})"
},
T:{
	g:0,
	c:null,
	s:"[A-Z]{1,4}"
},
Z:{
	g:1,
	c:"zz = results[{0}] * 1;\nzz = (-43200 <= zz && zz <= 50400)? zz : null;\n",
	s:"([+-]?\\d{1,5})"
},
c:function(){
	var e=[],c=[a("Y",1),a("m",2),a("d",3),a("h",4),a("i",5),a("s",6),{
		c:"ms = results[7] || '0'; ms = parseInt(ms, 10)/Math.pow(10, ms.length - 3);\n"
	},{
		c:["if(results[8]) {","if(results[8] == 'Z'){","zz = 0;","}else if (results[8].indexOf(':') > -1){",a("P",8).c,"}else{",a("O",8).c,"}","}"].join("\n")
		}];
	for(var g=0,d=c.length;g<d;++g){
		e.push(c[g].c)
		}
		return{
		g:1,
		c:e.join(""),
		s:[c[0].s,"(?:","-",c[1].s,"(?:","-",c[2].s,"(?:","(?:T| )?",c[3].s,":",c[4].s,"(?::",c[5].s,")?","(?:(?:\\.|,)(\\d+))?","(Z|(?:[-+]\\d{2}(?::)?\\d{2}))?",")?",")?",")?"].join("")
		}
	},
U:{
	g:1,
	c:"u = parseInt(results[{0}], 10);\n",
	s:"(-?\\d+)"
}
}
})
}());
Ext.apply(Date.prototype,{
	dateFormat:function(a){
		if(Date.formatFunctions[a]==null){
			Date.createFormat(a)
			}
			return Date.formatFunctions[a].call(this)
		},
	getTimezone:function(){
		return this.toString().replace(/^.* (?:\((.*)\)|([A-Z]{1,4})(?:[\-+][0-9]{4})?(?: -?\d+)?)$/,"$1$2").replace(/[^A-Z]/g,"")
		},
	getGMTOffset:function(a){
		return(this.getTimezoneOffset()>0?"-":"+")+String.leftPad(Math.floor(Math.abs(this.getTimezoneOffset())/60),2,"0")+(a?":":"")+String.leftPad(Math.abs(this.getTimezoneOffset()%60),2,"0")
		},
	getDayOfYear:function(){
		var b=0,e=this.clone(),a=this.getMonth(),c;
		for(c=0,e.setDate(1),e.setMonth(0);c<a;e.setMonth(++c)){
			b+=e.getDaysInMonth()
			}
			return b+this.getDate()-1
		},
	getWeekOfYear:function(){
		var a=86400000,b=7*a;
		return function(){
			var d=Date.UTC(this.getFullYear(),this.getMonth(),this.getDate()+3)/a,c=Math.floor(d/7),e=new Date(c*b).getUTCFullYear();
			return c-Math.floor(Date.UTC(e,0,7)/b)+1
			}
		}(),
	isLeapYear:function(){
	var a=this.getFullYear();
	return !!((a&3)==0&&(a%100||(a%400==0&&a)))
	},
getFirstDayOfMonth:function(){
	var a=(this.getDay()-(this.getDate()-1))%7;
	return(a<0)?(a+7):a
	},
getLastDayOfMonth:function(){
	return this.getLastDateOfMonth().getDay()
	},
getFirstDateOfMonth:function(){
	return new Date(this.getFullYear(),this.getMonth(),1)
	},
getLastDateOfMonth:function(){
	return new Date(this.getFullYear(),this.getMonth(),this.getDaysInMonth())
	},
getDaysInMonth:function(){
	var a=[31,28,31,30,31,30,31,31,30,31,30,31];
	return function(){
		var b=this.getMonth();
		return b==1&&this.isLeapYear()?29:a[b]
		}
	}(),
	getSuffix:function(){
	switch(this.getDate()){
		case 1:case 21:case 31:
			return"st";
		case 2:case 22:
			return"nd";
		case 3:case 23:
			return"rd";
		default:
			return"th"
			}
		},
clone:function(){
	return new Date(this.getTime())
	},
isDST:function(){
	return new Date(this.getFullYear(),0,1).getTimezoneOffset()!=this.getTimezoneOffset()
	},
clearTime:function(g){
	if(g){
		return this.clone().clearTime()
		}
		var b=this.getDate();
	this.setHours(0);
	this.setMinutes(0);
	this.setSeconds(0);
	this.setMilliseconds(0);
	if(this.getDate()!=b){
		for(var a=1,e=this.add(Date.HOUR,a);e.getDate()!=b;a++,e=this.add(Date.HOUR,a)){}
		this.setDate(b);
		this.setHours(e.getHours())
		}
		return this
	},
add:function(b,c){
	var e=this.clone();
	if(!b||c===0){
		return e
		}
		switch(b.toLowerCase()){
		case Date.MILLI:
			e.setMilliseconds(this.getMilliseconds()+c);
			break;
		case Date.SECOND:
			e.setSeconds(this.getSeconds()+c);
			break;
		case Date.MINUTE:
			e.setMinutes(this.getMinutes()+c);
			break;
		case Date.HOUR:
			e.setHours(this.getHours()+c);
			break;
		case Date.DAY:
			e.setDate(this.getDate()+c);
			break;
		case Date.MONTH:
			var a=this.getDate();
			if(a>28){
			a=Math.min(a,this.getFirstDateOfMonth().add("mo",c).getLastDateOfMonth().getDate())
			}
			e.setDate(a);
			e.setMonth(this.getMonth()+c);
			break;
		case Date.YEAR:
			e.setFullYear(this.getFullYear()+c);
			break
			}
			return e
	},
between:function(c,a){
	var b=this.getTime();
	return c.getTime()<=b&&b<=a.getTime()
	}
});
Date.prototype.format=Date.prototype.dateFormat;
if(Ext.isSafari&&(navigator.userAgent.match(/WebKit\/(\d+)/)[1]||NaN)<420){
	Ext.apply(Date.prototype,{
		_xMonth:Date.prototype.setMonth,
		_xDate:Date.prototype.setDate,
		setMonth:function(a){
			if(a<=-1){
				var d=Math.ceil(-a),c=Math.ceil(d/12),b=(d%12)?12-d%12:0;
				this.setFullYear(this.getFullYear()-c);
				return this._xMonth(b)
				}else{
				return this._xMonth(a)
				}
			},
	setDate:function(a){
		return this.setTime(this.getTime()-(this.getDate()-a)*86400000)
		}
	})
}
Ext.util.MixedCollection=function(b,a){
	this.items=[];
	this.map={};

	this.keys=[];
	this.length=0;
	this.addEvents("clear","add","replace","remove","sort");
	this.allowFunctions=b===true;
	if(a){
		this.getKey=a
		}
		Ext.util.MixedCollection.superclass.constructor.call(this)
	};

Ext.extend(Ext.util.MixedCollection,Ext.util.Observable,{
	allowFunctions:false,
	add:function(b,c){
		if(arguments.length==1){
			c=arguments[0];
			b=this.getKey(c)
			}
			if(typeof b!="undefined"&&b!==null){
			var a=this.map[b];
			if(typeof a!="undefined"){
				return this.replace(b,c)
				}
				this.map[b]=c
			}
			this.length++;
		this.items.push(c);
		this.keys.push(b);
		this.fireEvent("add",this.length-1,c,b);
		return c
		},
	getKey:function(a){
		return a.id
		},
	replace:function(c,d){
		if(arguments.length==1){
			d=arguments[0];
			c=this.getKey(d)
			}
			var a=this.map[c];
		if(typeof c=="undefined"||c===null||typeof a=="undefined"){
			return this.add(c,d)
			}
			var b=this.indexOfKey(c);
		this.items[b]=d;
		this.map[c]=d;
		this.fireEvent("replace",c,a,d);
		return d
		},
	addAll:function(e){
		if(arguments.length>1||Ext.isArray(e)){
			var b=arguments.length>1?arguments:e;
			for(var d=0,a=b.length;d<a;d++){
				this.add(b[d])
				}
			}else{
		for(var c in e){
			if(this.allowFunctions||typeof e[c]!="function"){
				this.add(c,e[c])
				}
			}
		}
	},
each:function(e,d){
	var b=[].concat(this.items);
	for(var c=0,a=b.length;c<a;c++){
		if(e.call(d||b[c],b[c],c,a)===false){
			break
		}
	}
	},
eachKey:function(d,c){
	for(var b=0,a=this.keys.length;b<a;b++){
		d.call(c||window,this.keys[b],this.items[b],b,a)
		}
	},
find:function(d,c){
	for(var b=0,a=this.items.length;b<a;b++){
		if(d.call(c||window,this.items[b],this.keys[b])){
			return this.items[b]
			}
		}
	return null
},
insert:function(a,b,c){
	if(arguments.length==2){
		c=arguments[1];
		b=this.getKey(c)
		}
		if(this.containsKey(b)){
		this.suspendEvents();
		this.removeKey(b);
		this.resumeEvents()
		}
		if(a>=this.length){
		return this.add(b,c)
		}
		this.length++;
	this.items.splice(a,0,c);
	if(typeof b!="undefined"&&b!==null){
		this.map[b]=c
		}
		this.keys.splice(a,0,b);
	this.fireEvent("add",a,c,b);
	return c
	},
remove:function(a){
	return this.removeAt(this.indexOf(a))
	},
removeAt:function(a){
	if(a<this.length&&a>=0){
		this.length--;
		var c=this.items[a];
		this.items.splice(a,1);
		var b=this.keys[a];
		if(typeof b!="undefined"){
			delete this.map[b]
		}
		this.keys.splice(a,1);
		this.fireEvent("remove",c,b);
		return c
		}
		return false
	},
removeKey:function(a){
	return this.removeAt(this.indexOfKey(a))
	},
getCount:function(){
	return this.length
	},
indexOf:function(a){
	return this.items.indexOf(a)
	},
indexOfKey:function(a){
	return this.keys.indexOf(a)
	},
item:function(b){
	var a=this.map[b],c=a!==undefined?a:(typeof b=="number")?this.items[b]:undefined;
	return typeof c!="function"||this.allowFunctions?c:null
	},
itemAt:function(a){
	return this.items[a]
	},
key:function(a){
	return this.map[a]
	},
contains:function(a){
	return this.indexOf(a)!=-1
	},
containsKey:function(a){
	return typeof this.map[a]!="undefined"
	},
clear:function(){
	this.length=0;
	this.items=[];
	this.keys=[];
	this.map={};

	this.fireEvent("clear")
	},
first:function(){
	return this.items[0]
	},
last:function(){
	return this.items[this.length-1]
	},
_sort:function(l,a,k){
	var d,e,b=String(a).toUpperCase()=="DESC"?-1:1,h=[],m=this.keys,g=this.items;
	k=k||function(i,c){
		return i-c
		};

	for(d=0,e=g.length;d<e;d++){
		h[h.length]={
			key:m[d],
			value:g[d],
			index:d
		}
	}
	h.sort(function(i,c){
	var n=k(i[l],c[l])*b;
	if(n===0){
		n=(i.index<c.index?-1:1)
		}
		return n
	});
for(d=0,e=h.length;d<e;d++){
	g[d]=h[d].value;
	m[d]=h[d].key
	}
	this.fireEvent("sort",this)
},
sort:function(a,b){
	this._sort("value",a,b)
	},
reorder:function(d){
	this.suspendEvents();
	var b=this.items,c=0,g=b.length,a=[],e=[],h;
	for(h in d){
		a[d[h]]=b[h]
		}
		for(c=0;c<g;c++){
		if(d[c]==undefined){
			e.push(b[c])
			}
		}
	for(c=0;c<g;c++){
	if(a[c]==undefined){
		a[c]=e.shift()
		}
	}
this.clear();
this.addAll(a);
this.resumeEvents();
this.fireEvent("sort",this)
},
keySort:function(a,b){
	this._sort("key",a,b||function(d,c){
		var g=String(d).toUpperCase(),e=String(c).toUpperCase();
		return g>e?1:(g<e?-1:0)
		})
	},
getRange:function(e,a){
	var b=this.items;
	if(b.length<1){
		return[]
		}
		e=e||0;
	a=Math.min(typeof a=="undefined"?this.length-1:a,this.length-1);
	var c,d=[];
	if(e<=a){
		for(c=e;c<=a;c++){
			d[d.length]=b[c]
			}
		}else{
	for(c=e;c>=a;c--){
		d[d.length]=b[c]
		}
	}
	return d
},
filter:function(c,b,d,a){
	if(Ext.isEmpty(b,false)){
		return this.clone()
		}
		b=this.createValueMatcher(b,d,a);
	return this.filterBy(function(e){
		return e&&b.test(e[c])
		})
	},
filterBy:function(g,e){
	var h=new Ext.util.MixedCollection();
	h.getKey=this.getKey;
	var b=this.keys,d=this.items;
	for(var c=0,a=d.length;c<a;c++){
		if(g.call(e||this,d[c],b[c])){
			h.add(b[c],d[c])
			}
		}
	return h
},
findIndex:function(c,b,e,d,a){
	if(Ext.isEmpty(b,false)){
		return -1
		}
		b=this.createValueMatcher(b,d,a);
	return this.findIndexBy(function(g){
		return g&&b.test(g[c])
		},null,e)
	},
findIndexBy:function(g,e,h){
	var b=this.keys,d=this.items;
	for(var c=(h||0),a=d.length;c<a;c++){
		if(g.call(e||this,d[c],b[c])){
			return c
			}
		}
	return -1
},
createValueMatcher:function(c,e,a,b){
	if(!c.exec){
		var d=Ext.escapeRe;
		c=String(c);
		if(e===true){
			c=d(c)
			}else{
			c="^"+d(c);
			if(b===true){
				c+="$"
				}
			}
		c=new RegExp(c,a?"":"i")
	}
	return c
},
clone:function(){
	var e=new Ext.util.MixedCollection();
	var b=this.keys,d=this.items;
	for(var c=0,a=d.length;c<a;c++){
		e.add(b[c],d[c])
		}
		e.getKey=this.getKey;
	return e
	}
});
Ext.util.MixedCollection.prototype.get=Ext.util.MixedCollection.prototype.item;
Ext.AbstractManager=Ext.extend(Object,{
	typeName:"type",
	constructor:function(a){
		Ext.apply(this,a||{});
		this.all=new Ext.util.MixedCollection();
		this.types={}
	},
get:function(a){
	return this.all.get(a)
	},
register:function(a){
	this.all.add(a)
	},
unregister:function(a){
	this.all.remove(a)
	},
registerType:function(b,a){
	this.types[b]=a;
	a[this.typeName]=b
	},
isRegistered:function(a){
	return this.types[a]!==undefined
	},
create:function(a,d){
	var b=a[this.typeName]||a.type||d,c=this.types[b];
	if(c==undefined){
		throw new Error(String.format("The '{0}' type has not been registered with this manager",b))
		}
		return new c(a)
	},
onAvailable:function(d,c,b){
	var a=this.all;
	a.on("add",function(e,g){
		if(g.id==d){
			c.call(b||g,g);
			a.un("add",c,b)
			}
		})
}
});
Ext.util.Format=function(){
	var trimRe=/^\s+|\s+$/g,stripTagsRE=/<\/?[^>]+>/gi,stripScriptsRe=/(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)/ig,nl2brRe=/\r?\n/g;
	return{
		ellipsis:function(value,len,word){
			if(value&&value.length>len){
				if(word){
					var vs=value.substr(0,len-2),index=Math.max(vs.lastIndexOf(" "),vs.lastIndexOf("."),vs.lastIndexOf("!"),vs.lastIndexOf("?"));
					if(index==-1||index<(len-15)){
						return value.substr(0,len-3)+"..."
						}else{
						return vs.substr(0,index)+"..."
						}
					}else{
				return value.substr(0,len-3)+"..."
				}
			}
		return value
	},
undef:function(value){
	return value!==undefined?value:""
	},
defaultValue:function(value,defaultValue){
	return value!==undefined&&value!==""?value:defaultValue
	},
htmlEncode:function(value){
	return !value?value:String(value).replace(/&/g,"&amp;").replace(/>/g,"&gt;").replace(/</g,"&lt;").replace(/"/g,"&quot;")
	},
htmlDecode:function(value){
	return !value?value:String(value).replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&quot;/g,'"').replace(/&amp;/g,"&")
	},
trim:function(value){
	return String(value).replace(trimRe,"")
	},
substr:function(value,start,length){
	return String(value).substr(start,length)
	},
lowercase:function(value){
	return String(value).toLowerCase()
	},
uppercase:function(value){
	return String(value).toUpperCase()
	},
capitalize:function(value){
	return !value?value:value.charAt(0).toUpperCase()+value.substr(1).toLowerCase()
	},
call:function(value,fn){
	if(arguments.length>2){
		var args=Array.prototype.slice.call(arguments,2);
		args.unshift(value);
		return eval(fn).apply(window,args)
		}else{
		return eval(fn).call(window,value)
		}
	},
usMoney:function(v){
	v=(Math.round((v-0)*100))/100;
	v=(v==Math.floor(v))?v+".00":((v*10==Math.floor(v*10))?v+"0":v);
	v=String(v);
	var ps=v.split("."),whole=ps[0],sub=ps[1]?"."+ps[1]:".00",r=/(\d+)(\d{3})/;
	while(r.test(whole)){
		whole=whole.replace(r,"$1,$2")
		}
		v=whole+sub;
	if(v.charAt(0)=="-"){
		return"-$"+v.substr(1)
		}
		return"$"+v
	},
date:function(v,format){
	if(!v){
		return""
		}
		if(!Ext.isDate(v)){
		v=new Date(Date.parse(v))
		}
		return v.dateFormat(format||"m/d/Y")
	},
dateRenderer:function(format){
	return function(v){
		return Ext.util.Format.date(v,format)
		}
	},
stripTags:function(v){
	return !v?v:String(v).replace(stripTagsRE,"")
	},
stripScripts:function(v){
	return !v?v:String(v).replace(stripScriptsRe,"")
	},
fileSize:function(size){
	if(size<1024){
		return size+" bytes"
		}else{
		if(size<1048576){
			return(Math.round(((size*10)/1024))/10)+" KB"
			}else{
			return(Math.round(((size*10)/1048576))/10)+" MB"
			}
		}
},
math:function(){
	var fns={};

	return function(v,a){
		if(!fns[a]){
			fns[a]=new Function("v","return v "+a+";")
			}
			return fns[a](v)
		}
	}(),
round:function(value,precision){
	var result=Number(value);
	if(typeof precision=="number"){
		precision=Math.pow(10,precision);
		result=Math.round(value*precision)/precision
		}
		return result
	},
number:function(v,format){
	if(!format){
		return v
		}
		v=Ext.num(v,NaN);
	if(isNaN(v)){
		return""
		}
		var comma=",",dec=".",i18n=false,neg=v<0;
	v=Math.abs(v);
	if(format.substr(format.length-2)=="/i"){
		format=format.substr(0,format.length-2);
		i18n=true;
		comma=".";
		dec=","
		}
		var hasComma=format.indexOf(comma)!=-1,psplit=(i18n?format.replace(/[^\d\,]/g,""):format.replace(/[^\d\.]/g,"")).split(dec);
	if(1<psplit.length){
		v=v.toFixed(psplit[1].length)
		}else{
		if(2<psplit.length){
			throw ("NumberFormatException: invalid format, formats should have no more than 1 period: "+format)
			}else{
			v=v.toFixed(0)
			}
		}
	var fnum=v.toString();
psplit=fnum.split(".");
if(hasComma){
	var cnum=psplit[0],parr=[],j=cnum.length,m=Math.floor(j/3),n=cnum.length%3||3,i;
	for(i=0;i<j;i+=n){
		if(i!=0){
			n=3
			}
			parr[parr.length]=cnum.substr(i,n);
		m-=1
		}
		fnum=parr.join(comma);
	if(psplit[1]){
		fnum+=dec+psplit[1]
		}
	}else{
	if(psplit[1]){
		fnum=psplit[0]+dec+psplit[1]
		}
	}
return(neg?"-":"")+format.replace(/[\d,?\.?]+/,fnum)
},
numberRenderer:function(format){
	return function(v){
		return Ext.util.Format.number(v,format)
		}
	},
plural:function(v,s,p){
	return v+" "+(v==1?s:(p?p:s+"s"))
	},
nl2br:function(v){
	return Ext.isEmpty(v)?"":v.replace(nl2brRe,"<br/>")
	}
}
}();
Ext.XTemplate=function(){
	Ext.XTemplate.superclass.constructor.apply(this,arguments);
	var z=this,k=z.html,r=/<tpl\b[^>]*>((?:(?=([^<]+))\2|<(?!tpl\b[^>]*>))*?)<\/tpl>/,d=/^<tpl\b[^>]*?for="(.*?)"/,w=/^<tpl\b[^>]*?if="(.*?)"/,y=/^<tpl\b[^>]*?exec="(.*?)"/,t,q=0,l=[],p="values",x="parent",n="xindex",o="xcount",e="return ",c="with(values){ ";
	k=["<tpl>",k,"</tpl>"].join("");
	while((t=k.match(r))){
		var b=t[0].match(d),a=t[0].match(w),B=t[0].match(y),g=null,h=null,u=null,A=b&&b[1]?b[1]:"";
		if(a){
			g=a&&a[1]?a[1]:null;
			if(g){
				h=new Function(p,x,n,o,c+e+(Ext.util.Format.htmlDecode(g))+"; }")
				}
			}
		if(B){
		g=B&&B[1]?B[1]:null;
		if(g){
			u=new Function(p,x,n,o,c+(Ext.util.Format.htmlDecode(g))+"; }")
			}
		}
	if(A){
	switch(A){
		case".":
			A=new Function(p,x,c+e+p+"; }");
			break;
		case"..":
			A=new Function(p,x,c+e+x+"; }");
			break;
		default:
			A=new Function(p,x,c+e+A+"; }")
			}
		}
l.push({
	id:q,
	target:A,
	exec:u,
	test:h,
	body:t[1]||""
	});
k=k.replace(t[0],"{xtpl"+q+"}");
++q
}
for(var v=l.length-1;v>=0;--v){
	z.compileTpl(l[v])
	}
	z.master=l[l.length-1];
z.tpls=l
};

Ext.extend(Ext.XTemplate,Ext.Template,{
	re:/\{([\w-\.\#]+)(?:\:([\w\.]*)(?:\((.*?)?\))?)?(\s?[\+\-\*\\]\s?[\d\.\+\-\*\\\(\)]+)?\}/g,
	codeRe:/\{\[((?:\\\]|.|\n)*?)\]\}/g,
	applySubTemplate:function(a,l,k,d,c){
		var h=this,g,n=h.tpls[a],m,b=[];
		if((n.test&&!n.test.call(h,l,k,d,c))||(n.exec&&n.exec.call(h,l,k,d,c))){
			return""
			}
			m=n.target?n.target.call(h,l,k):l;
		g=m.length;
		k=n.target?l:k;
		if(n.target&&Ext.isArray(m)){
			for(var e=0,g=m.length;e<g;e++){
				b[b.length]=n.compiled.call(h,m[e],k,e+1,g)
				}
				return b.join("")
			}
			return n.compiled.call(h,m,k,d,c)
		},
	compileTpl:function(tpl){
		var fm=Ext.util.Format,useF=this.disableFormats!==true,sep=Ext.isGecko?"+":",",body;
		function fn(m,name,format,args,math){
			if(name.substr(0,4)=="xtpl"){
				return"'"+sep+"this.applySubTemplate("+name.substr(4)+", values, parent, xindex, xcount)"+sep+"'"
				}
				var v;
			if(name==="."){
				v="values"
				}else{
				if(name==="#"){
					v="xindex"
					}else{
					if(name.indexOf(".")!=-1){
						v=name
						}else{
						v="values['"+name+"']"
						}
					}
			}
		if(math){
		v="("+v+math+")"
		}
		if(format&&useF){
		args=args?","+args:"";
		if(format.substr(0,5)!="this."){
			format="fm."+format+"("
			}else{
			format='this.call("'+format.substr(5)+'", ';
			args=", values"
			}
		}else{
	args="";
	format="("+v+" === undefined ? '' : "
	}
	return"'"+sep+format+v+args+")"+sep+"'"
}
function codeFn(m,code){
	return"'"+sep+"("+code.replace(/\\'/g,"'")+")"+sep+"'"
	}
	if(Ext.isGecko){
	body="tpl.compiled = function(values, parent, xindex, xcount){ return '"+tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn)+"';};"
	}else{
	body=["tpl.compiled = function(values, parent, xindex, xcount){ return ['"];
	body.push(tpl.body.replace(/(\r\n|\n)/g,"\\n").replace(/'/g,"\\'").replace(this.re,fn).replace(this.codeRe,codeFn));
	body.push("'].join('');};");
	body=body.join("")
	}
	eval(body);
	return this
	},
applyTemplate:function(a){
	return this.master.compiled.call(this,a,{},1,1)
	},
compile:function(){
	return this
	}
});
Ext.XTemplate.prototype.apply=Ext.XTemplate.prototype.applyTemplate;
Ext.XTemplate.from=function(a){
	a=Ext.getDom(a);
	return new Ext.XTemplate(a.value||a.innerHTML)
	};

Ext.util.CSS=function(){
	var d=null;
	var c=document;
	var b=/(-[a-z])/gi;
	var a=function(e,g){
		return g.charAt(1).toUpperCase()
		};

	return{
		createStyleSheet:function(i,m){
			var h;
			var g=c.getElementsByTagName("head")[0];
			var l=c.createElement("style");
			l.setAttribute("type","text/css");
			if(m){
				l.setAttribute("id",m)
				}
				if(Ext.isIE){
				g.appendChild(l);
				h=l.styleSheet;
				h.cssText=i
				}else{
				try{
					l.appendChild(c.createTextNode(i))
					}catch(k){
					l.cssText=i
					}
					g.appendChild(l);
				h=l.styleSheet?l.styleSheet:(l.sheet||c.styleSheets[c.styleSheets.length-1])
				}
				this.cacheStyleSheet(h);
			return h
			},
		removeStyleSheet:function(g){
			var e=c.getElementById(g);
			if(e){
				e.parentNode.removeChild(e)
				}
			},
	swapStyleSheet:function(h,e){
		this.removeStyleSheet(h);
		var g=c.createElement("link");
		g.setAttribute("rel","stylesheet");
		g.setAttribute("type","text/css");
		g.setAttribute("id",h);
		g.setAttribute("href",e);
		c.getElementsByTagName("head")[0].appendChild(g)
		},
	refreshCache:function(){
		return this.getRules(true)
		},
	cacheStyleSheet:function(h){
		if(!d){
			d={}
		}
		try{
		var k=h.cssRules||h.rules;
		for(var g=k.length-1;g>=0;--g){
			d[k[g].selectorText.toLowerCase()]=k[g]
			}
		}catch(i){}
},
getRules:function(h){
	if(d===null||h){
		d={};

		var l=c.styleSheets;
		for(var k=0,g=l.length;k<g;k++){
			try{
				this.cacheStyleSheet(l[k])
				}catch(m){}
		}
		}
	return d
},
getRule:function(e,h){
	var g=this.getRules(h);
	if(!Ext.isArray(e)){
		return g[e.toLowerCase()]
		}
		for(var k=0;k<e.length;k++){
		if(g[e[k]]){
			return g[e[k].toLowerCase()]
			}
		}
	return null
},
updateRule:function(e,k,h){
	if(!Ext.isArray(e)){
		var l=this.getRule(e);
		if(l){
			l.style[k.replace(b,a)]=h;
			return true
			}
		}else{
	for(var g=0;g<e.length;g++){
		if(this.updateRule(e[g],k,h)){
			return true
			}
		}
	}
return false
}
}
}();
Ext.util.ClickRepeater=Ext.extend(Ext.util.Observable,{
	constructor:function(b,a){
		this.el=Ext.get(b);
		this.el.unselectable();
		Ext.apply(this,a);
		this.addEvents("mousedown","click","mouseup");
		if(!this.disabled){
			this.disabled=true;
			this.enable()
			}
			if(this.handler){
			this.on("click",this.handler,this.scope||this)
			}
			Ext.util.ClickRepeater.superclass.constructor.call(this)
		},
	interval:20,
	delay:250,
	preventDefault:true,
	stopDefault:false,
	timer:0,
	enable:function(){
		if(this.disabled){
			this.el.on("mousedown",this.handleMouseDown,this);
			if(Ext.isIE){
				this.el.on("dblclick",this.handleDblClick,this)
				}
				if(this.preventDefault||this.stopDefault){
				this.el.on("click",this.eventOptions,this)
				}
			}
		this.disabled=false
	},
disable:function(a){
	if(a||!this.disabled){
		clearTimeout(this.timer);
		if(this.pressClass){
			this.el.removeClass(this.pressClass)
			}
			Ext.getDoc().un("mouseup",this.handleMouseUp,this);
		this.el.removeAllListeners()
		}
		this.disabled=true
	},
setDisabled:function(a){
	this[a?"disable":"enable"]()
	},
eventOptions:function(a){
	if(this.preventDefault){
		a.preventDefault()
		}
		if(this.stopDefault){
		a.stopEvent()
		}
	},
destroy:function(){
	this.disable(true);
	Ext.destroy(this.el);
	this.purgeListeners()
	},
handleDblClick:function(a){
	clearTimeout(this.timer);
	this.el.blur();
	this.fireEvent("mousedown",this,a);
	this.fireEvent("click",this,a)
	},
handleMouseDown:function(a){
	clearTimeout(this.timer);
	this.el.blur();
	if(this.pressClass){
		this.el.addClass(this.pressClass)
		}
		this.mousedownTime=new Date();
	Ext.getDoc().on("mouseup",this.handleMouseUp,this);
	this.el.on("mouseout",this.handleMouseOut,this);
	this.fireEvent("mousedown",this,a);
	this.fireEvent("click",this,a);
	if(this.accelerate){
		this.delay=400
		}
		this.timer=this.click.defer(this.delay||this.interval,this,[a])
	},
click:function(a){
	this.fireEvent("click",this,a);
	this.timer=this.click.defer(this.accelerate?this.easeOutExpo(this.mousedownTime.getElapsed(),400,-390,12000):this.interval,this,[a])
	},
easeOutExpo:function(e,a,h,g){
	return(e==g)?a+h:h*(-Math.pow(2,-10*e/g)+1)+a
	},
handleMouseOut:function(){
	clearTimeout(this.timer);
	if(this.pressClass){
		this.el.removeClass(this.pressClass)
		}
		this.el.on("mouseover",this.handleMouseReturn,this)
	},
handleMouseReturn:function(){
	this.el.un("mouseover",this.handleMouseReturn,this);
	if(this.pressClass){
		this.el.addClass(this.pressClass)
		}
		this.click()
	},
handleMouseUp:function(a){
	clearTimeout(this.timer);
	this.el.un("mouseover",this.handleMouseReturn,this);
	this.el.un("mouseout",this.handleMouseOut,this);
	Ext.getDoc().un("mouseup",this.handleMouseUp,this);
	this.el.removeClass(this.pressClass);
	this.fireEvent("mouseup",this,a)
	}
});
Ext.KeyNav=function(b,a){
	this.el=Ext.get(b);
	Ext.apply(this,a);
	if(!this.disabled){
		this.disabled=true;
		this.enable()
		}
	};

Ext.KeyNav.prototype={
	disabled:false,
	defaultEventAction:"stopEvent",
	forceKeyDown:false,
	relay:function(c){
		var a=c.getKey(),b=this.keyToHandler[a];
		if(b&&this[b]){
			if(this.doRelay(c,this[b],b)!==true){
				c[this.defaultEventAction]()
				}
			}
	},
doRelay:function(c,b,a){
	return b.call(this.scope||this,c,a)
	},
enter:false,
left:false,
right:false,
up:false,
down:false,
tab:false,
esc:false,
pageUp:false,
pageDown:false,
del:false,
home:false,
end:false,
keyToHandler:{
	37:"left",
	39:"right",
	38:"up",
	40:"down",
	33:"pageUp",
	34:"pageDown",
	46:"del",
	36:"home",
	35:"end",
	13:"enter",
	27:"esc",
	9:"tab"
},
stopKeyUp:function(b){
	var a=b.getKey();
	if(a>=37&&a<=40){
		b.stopEvent()
		}
	},
destroy:function(){
	this.disable()
	},
enable:function(){
	if(this.disabled){
		if(Ext.isSafari2){
			this.el.on("keyup",this.stopKeyUp,this)
			}
			this.el.on(this.isKeydown()?"keydown":"keypress",this.relay,this);
		this.disabled=false
		}
	},
disable:function(){
	if(!this.disabled){
		if(Ext.isSafari2){
			this.el.un("keyup",this.stopKeyUp,this)
			}
			this.el.un(this.isKeydown()?"keydown":"keypress",this.relay,this);
		this.disabled=true
		}
	},
setDisabled:function(a){
	this[a?"disable":"enable"]()
	},
isKeydown:function(){
	return this.forceKeyDown||Ext.EventManager.useKeydown
	}
};

Ext.KeyMap=function(c,b,a){
	this.el=Ext.get(c);
	this.eventName=a||"keydown";
	this.bindings=[];
	if(b){
		this.addBinding(b)
		}
		this.enable()
	};

Ext.KeyMap.prototype={
	stopEvent:false,
	addBinding:function(b){
		if(Ext.isArray(b)){
			Ext.each(b,function(m){
				this.addBinding(m)
				},this);
			return
		}
		var k=b.key,g=b.fn||b.handler,l=b.scope;
		if(b.stopEvent){
			this.stopEvent=b.stopEvent
			}
			if(typeof k=="string"){
			var h=[];
			var e=k.toUpperCase();
			for(var c=0,d=e.length;c<d;c++){
				h.push(e.charCodeAt(c))
				}
				k=h
			}
			var a=Ext.isArray(k);
		var i=function(p){
			if(this.checkModifiers(b,p)){
				var n=p.getKey();
				if(a){
					for(var o=0,m=k.length;o<m;o++){
						if(k[o]==n){
							if(this.stopEvent){
								p.stopEvent()
								}
								g.call(l||window,n,p);
							return
						}
					}
					}else{
			if(n==k){
				if(this.stopEvent){
					p.stopEvent()
					}
					g.call(l||window,n,p)
				}
			}
	}
};

this.bindings.push(i)
},
checkModifiers:function(b,h){
	var k,d,g=["shift","ctrl","alt"];
	for(var c=0,a=g.length;c<a;++c){
		d=g[c];
		k=b[d];
		if(!(k===undefined||(k===h[d+"Key"]))){
			return false
			}
		}
	return true
},
on:function(b,d,c){
	var h,a,e,g;
	if(typeof b=="object"&&!Ext.isArray(b)){
		h=b.key;
		a=b.shift;
		e=b.ctrl;
		g=b.alt
		}else{
		h=b
		}
		this.addBinding({
		key:h,
		shift:a,
		ctrl:e,
		alt:g,
		fn:d,
		scope:c
	})
	},
handleKeyDown:function(g){
	if(this.enabled){
		var c=this.bindings;
		for(var d=0,a=c.length;d<a;d++){
			c[d].call(this,g)
			}
		}
	},
isEnabled:function(){
	return this.enabled
	},
enable:function(){
	if(!this.enabled){
		this.el.on(this.eventName,this.handleKeyDown,this);
		this.enabled=true
		}
	},
disable:function(){
	if(this.enabled){
		this.el.removeListener(this.eventName,this.handleKeyDown,this);
		this.enabled=false
		}
	},
setDisabled:function(a){
	this[a?"disable":"enable"]()
	}
};

Ext.util.TextMetrics=function(){
	var a;
	return{
		measure:function(b,c,d){
			if(!a){
				a=Ext.util.TextMetrics.Instance(b,d)
				}
				a.bind(b);
			a.setFixedWidth(d||"auto");
			return a.getSize(c)
			},
		createInstance:function(b,c){
			return Ext.util.TextMetrics.Instance(b,c)
			}
		}
}();
Ext.util.TextMetrics.Instance=function(b,d){
	var c=new Ext.Element(document.createElement("div"));
	document.body.appendChild(c.dom);
	c.position("absolute");
	c.setLeftTop(-1000,-1000);
	c.hide();
	if(d){
		c.setWidth(d)
		}
		var a={
		getSize:function(g){
			c.update(g);
			var e=c.getSize();
			c.update("");
			return e
			},
		bind:function(e){
			c.setStyle(Ext.fly(e).getStyles("font-size","font-style","font-weight","font-family","line-height","text-transform","letter-spacing"))
			},
		setFixedWidth:function(e){
			c.setWidth(e)
			},
		getWidth:function(e){
			c.dom.style.width="auto";
			return this.getSize(e).width
			},
		getHeight:function(e){
			return this.getSize(e).height
			}
		};

a.bind(b);
	return a
	};

Ext.Element.addMethods({
	getTextWidth:function(c,b,a){
		return(Ext.util.TextMetrics.measure(this.dom,Ext.value(c,this.dom.innerHTML,true)).width).constrain(b||0,a||1000000)
		}
	});
Ext.util.Cookies={
	set:function(c,e){
		var a=arguments;
		var i=arguments.length;
		var b=(i>2)?a[2]:null;
		var h=(i>3)?a[3]:"/";
		var d=(i>4)?a[4]:null;
		var g=(i>5)?a[5]:false;
		document.cookie=c+"="+escape(e)+((b===null)?"":("; expires="+b.toGMTString()))+((h===null)?"":("; path="+h))+((d===null)?"":("; domain="+d))+((g===true)?"; secure":"")
		},
	get:function(d){
		var b=d+"=";
		var g=b.length;
		var a=document.cookie.length;
		var e=0;
		var c=0;
		while(e<a){
			c=e+g;
			if(document.cookie.substring(e,c)==b){
				return Ext.util.Cookies.getCookieVal(c)
				}
				e=document.cookie.indexOf(" ",e)+1;
			if(e===0){
				break
			}
		}
		return null
	},
clear:function(a){
	if(Ext.util.Cookies.get(a)){
		document.cookie=a+"=; expires=Thu, 01-Jan-70 00:00:01 GMT"
		}
	},
getCookieVal:function(b){
	var a=document.cookie.indexOf(";",b);
	if(a==-1){
		a=document.cookie.length
		}
		return unescape(document.cookie.substring(b,a))
	}
};

Ext.handleError=function(a){
	throw a
	};

Ext.Error=function(a){
	this.message=(this.lang[a])?this.lang[a]:a
	};

Ext.Error.prototype=new Error();
Ext.apply(Ext.Error.prototype,{
	lang:{},
	name:"Ext.Error",
	getName:function(){
		return this.name
		},
	getMessage:function(){
		return this.message
		},
	toJson:function(){
		return Ext.encode(this)
		}
	});
Ext.ComponentMgr=function(){
	var c=new Ext.util.MixedCollection();
	var b={};

	var a={};

	return{
		register:function(d){
			c.add(d)
			},
		unregister:function(d){
			c.remove(d)
			},
		get:function(d){
			return c.get(d)
			},
		onAvailable:function(g,e,d){
			c.on("add",function(h,i){
				if(i.id==g){
					e.call(d||i,i);
					c.un("add",e,d)
					}
				})
		},
	all:c,
	types:b,
	ptypes:a,
	isRegistered:function(d){
		return b[d]!==undefined
		},
	isPluginRegistered:function(d){
		return a[d]!==undefined
		},
	registerType:function(e,d){
		b[e]=d;
		d.xtype=e
		},
	create:function(d,e){
		return d.render?d:new b[d.xtype||e](d)
		},
	registerPlugin:function(e,d){
		a[e]=d;
		d.ptype=e
		},
	createPlugin:function(e,g){
		var d=a[e.ptype||g];
		if(d.init){
			return d
			}else{
			return new d(e)
			}
		}
}
}();
Ext.reg=Ext.ComponentMgr.registerType;
Ext.preg=Ext.ComponentMgr.registerPlugin;
Ext.create=Ext.ComponentMgr.create;
Ext.Component=function(b){
	b=b||{};

	if(b.initialConfig){
		if(b.isAction){
			this.baseAction=b
			}
			b=b.initialConfig
		}else{
		if(b.tagName||b.dom||Ext.isString(b)){
			b={
				applyTo:b,
				id:b.id||b
				}
			}
	}
this.initialConfig=b;
Ext.apply(this,b);
this.addEvents("added","disable","enable","beforeshow","show","beforehide","hide","removed","beforerender","render","afterrender","beforedestroy","destroy","beforestaterestore","staterestore","beforestatesave","statesave");
this.getId();
Ext.ComponentMgr.register(this);
Ext.Component.superclass.constructor.call(this);
if(this.baseAction){
	this.baseAction.addComponent(this)
	}
	this.initComponent();
if(this.plugins){
	if(Ext.isArray(this.plugins)){
		for(var c=0,a=this.plugins.length;c<a;c++){
			this.plugins[c]=this.initPlugin(this.plugins[c])
			}
		}else{
	this.plugins=this.initPlugin(this.plugins)
	}
}
if(this.stateful!==false){
	this.initState()
	}
	if(this.applyTo){
	this.applyToMarkup(this.applyTo);
	delete this.applyTo
	}else{
	if(this.renderTo){
		this.render(this.renderTo);
		delete this.renderTo
		}
	}
};

Ext.Component.AUTO_ID=1000;
Ext.extend(Ext.Component,Ext.util.Observable,{
	disabled:false,
	hidden:false,
	autoEl:"div",
	disabledClass:"x-item-disabled",
	allowDomMove:true,
	autoShow:false,
	hideMode:"display",
	hideParent:false,
	rendered:false,
	tplWriteMode:"overwrite",
	bubbleEvents:[],
	ctype:"Ext.Component",
	actionMode:"el",
	getActionEl:function(){
		return this[this.actionMode]
		},
	initPlugin:function(a){
		if(a.ptype&&!Ext.isFunction(a.init)){
			a=Ext.ComponentMgr.createPlugin(a)
			}else{
			if(Ext.isString(a)){
				a=Ext.ComponentMgr.createPlugin({
					ptype:a
				})
				}
			}
		a.init(this);
	return a
	},
initComponent:function(){
	if(this.listeners){
		this.on(this.listeners);
		delete this.listeners
		}
		this.enableBubble(this.bubbleEvents)
	},
render:function(b,a){
	if(!this.rendered&&this.fireEvent("beforerender",this)!==false){
		if(!b&&this.el){
			this.el=Ext.get(this.el);
			b=this.el.dom.parentNode;
			this.allowDomMove=false
			}
			this.container=Ext.get(b);
		if(this.ctCls){
			this.container.addClass(this.ctCls)
			}
			this.rendered=true;
		if(a!==undefined){
			if(Ext.isNumber(a)){
				a=this.container.dom.childNodes[a]
				}else{
				a=Ext.getDom(a)
				}
			}
		this.onRender(this.container,a||null);
	if(this.autoShow){
		this.el.removeClass(["x-hidden","x-hide-"+this.hideMode])
		}
		if(this.cls){
		this.el.addClass(this.cls);
		delete this.cls
		}
		if(this.style){
		this.el.applyStyles(this.style);
		delete this.style
		}
		if(this.overCls){
		this.el.addClassOnOver(this.overCls)
		}
		this.fireEvent("render",this);
	var c=this.getContentTarget();
	if(this.html){
		c.update(Ext.DomHelper.markup(this.html));
		delete this.html
		}
		if(this.contentEl){
		var d=Ext.getDom(this.contentEl);
		Ext.fly(d).removeClass(["x-hidden","x-hide-display"]);
		c.appendChild(d)
		}
		if(this.tpl){
		if(!this.tpl.compile){
			this.tpl=new Ext.XTemplate(this.tpl)
			}
			if(this.data){
			this.tpl[this.tplWriteMode](c,this.data);
			delete this.data
			}
		}
	this.afterRender(this.container);
	if(this.hidden){
	this.doHide()
	}
	if(this.disabled){
	this.disable(true)
	}
	if(this.stateful!==false){
	this.initStateEvents()
	}
	this.fireEvent("afterrender",this)
	}
	return this
},
update:function(b,d,a){
	var c=this.getContentTarget();
	if(this.tpl&&typeof b!=="string"){
		this.tpl[this.tplWriteMode](c,b||{})
		}else{
		var e=Ext.isObject(b)?Ext.DomHelper.markup(b):b;
		c.update(e,d,a)
		}
	},
onAdded:function(a,b){
	this.ownerCt=a;
	this.initRef();
	this.fireEvent("added",this,a,b)
	},
onRemoved:function(){
	this.removeRef();
	this.fireEvent("removed",this,this.ownerCt);
	delete this.ownerCt
	},
initRef:function(){
	if(this.ref&&!this.refOwner){
		var d=this.ref.split("/"),c=d.length,b=0,a=this;
		while(a&&b<c){
			a=a.ownerCt;
			++b
			}
			if(a){
			a[this.refName=d[--b]]=this;
			this.refOwner=a
			}
		}
},
removeRef:function(){
	if(this.refOwner&&this.refName){
		delete this.refOwner[this.refName];
		delete this.refOwner
		}
	},
initState:function(){
	if(Ext.state.Manager){
		var b=this.getStateId();
		if(b){
			var a=Ext.state.Manager.get(b);
			if(a){
				if(this.fireEvent("beforestaterestore",this,a)!==false){
					this.applyState(Ext.apply({},a));
					this.fireEvent("staterestore",this,a)
					}
				}
		}
}
},
getStateId:function(){
	return this.stateId||((/^(ext-comp-|ext-gen)/).test(String(this.id))?null:this.id)
	},
initStateEvents:function(){
	if(this.stateEvents){
		for(var a=0,b;b=this.stateEvents[a];a++){
			this.on(b,this.saveState,this,{
				delay:100
			})
			}
		}
	},
applyState:function(a){
	if(a){
		Ext.apply(this,a)
		}
	},
getState:function(){
	return null
	},
saveState:function(){
	if(Ext.state.Manager&&this.stateful!==false){
		var b=this.getStateId();
		if(b){
			var a=this.getState();
			if(this.fireEvent("beforestatesave",this,a)!==false){
				Ext.state.Manager.set(b,a);
				this.fireEvent("statesave",this,a)
				}
			}
	}
},
applyToMarkup:function(a){
	this.allowDomMove=false;
	this.el=Ext.get(a);
	this.render(this.el.dom.parentNode)
	},
addClass:function(a){
	if(this.el){
		this.el.addClass(a)
		}else{
		this.cls=this.cls?this.cls+" "+a:a
		}
		return this
	},
removeClass:function(a){
	if(this.el){
		this.el.removeClass(a)
		}else{
		if(this.cls){
			this.cls=this.cls.split(" ").remove(a).join(" ")
			}
		}
	return this
},
onRender:function(b,a){
	if(!this.el&&this.autoEl){
		if(Ext.isString(this.autoEl)){
			this.el=document.createElement(this.autoEl)
			}else{
			var c=document.createElement("div");
			Ext.DomHelper.overwrite(c,this.autoEl);
			this.el=c.firstChild
			}
			if(!this.el.id){
			this.el.id=this.getId()
			}
		}
	if(this.el){
	this.el=Ext.get(this.el);
	if(this.allowDomMove!==false){
		b.dom.insertBefore(this.el.dom,a);
		if(c){
			Ext.removeNode(c);
			c=null
			}
		}
}
},
getAutoCreate:function(){
	var a=Ext.isObject(this.autoCreate)?this.autoCreate:Ext.apply({},this.defaultAutoCreate);
	if(this.id&&!a.id){
		a.id=this.id
		}
		return a
	},
afterRender:Ext.emptyFn,
destroy:function(){
	if(!this.isDestroyed){
		if(this.fireEvent("beforedestroy",this)!==false){
			this.destroying=true;
			this.beforeDestroy();
			if(this.ownerCt&&this.ownerCt.remove){
				this.ownerCt.remove(this,false)
				}
				if(this.rendered){
				this.el.remove();
				if(this.actionMode=="container"||this.removeMode=="container"){
					this.container.remove()
					}
				}
			if(this.focusTask&&this.focusTask.cancel){
			this.focusTask.cancel()
			}
			this.onDestroy();
		Ext.ComponentMgr.unregister(this);
		this.fireEvent("destroy",this);
		this.purgeListeners();
		this.destroying=false;
		this.isDestroyed=true
		}
	}
},
deleteMembers:function(){
	var b=arguments;
	for(var c=0,a=b.length;c<a;++c){
		delete this[b[c]]
	}
	},
beforeDestroy:Ext.emptyFn,
onDestroy:Ext.emptyFn,
getEl:function(){
	return this.el
	},
getContentTarget:function(){
	return this.el
	},
getId:function(){
	return this.id||(this.id="ext-comp-"+(++Ext.Component.AUTO_ID))
	},
getItemId:function(){
	return this.itemId||this.getId()
	},
focus:function(b,a){
	if(a){
		this.focusTask=new Ext.util.DelayedTask(this.focus,this,[b,false]);
		this.focusTask.delay(Ext.isNumber(a)?a:10);
		return this
		}
		if(this.rendered&&!this.isDestroyed){
		this.el.focus();
		if(b===true){
			this.el.dom.select()
			}
		}
	return this
},
blur:function(){
	if(this.rendered){
		this.el.blur()
		}
		return this
	},
disable:function(a){
	if(this.rendered){
		this.onDisable()
		}
		this.disabled=true;
	if(a!==true){
		this.fireEvent("disable",this)
		}
		return this
	},
onDisable:function(){
	this.getActionEl().addClass(this.disabledClass);
	this.el.dom.disabled=true
	},
enable:function(){
	if(this.rendered){
		this.onEnable()
		}
		this.disabled=false;
	this.fireEvent("enable",this);
	return this
	},
onEnable:function(){
	this.getActionEl().removeClass(this.disabledClass);
	this.el.dom.disabled=false
	},
setDisabled:function(a){
	return this[a?"disable":"enable"]()
	},
show:function(){
	if(this.fireEvent("beforeshow",this)!==false){
		this.hidden=false;
		if(this.autoRender){
			this.render(Ext.isBoolean(this.autoRender)?Ext.getBody():this.autoRender)
			}
			if(this.rendered){
			this.onShow()
			}
			this.fireEvent("show",this)
		}
		return this
	},
onShow:function(){
	this.getVisibilityEl().removeClass("x-hide-"+this.hideMode)
	},
hide:function(){
	if(this.fireEvent("beforehide",this)!==false){
		this.doHide();
		this.fireEvent("hide",this)
		}
		return this
	},
doHide:function(){
	this.hidden=true;
	if(this.rendered){
		this.onHide()
		}
	},
onHide:function(){
	this.getVisibilityEl().addClass("x-hide-"+this.hideMode)
	},
getVisibilityEl:function(){
	return this.hideParent?this.container:this.getActionEl()
	},
setVisible:function(a){
	return this[a?"show":"hide"]()
	},
isVisible:function(){
	return this.rendered&&this.getVisibilityEl().isVisible()
	},
cloneConfig:function(b){
	b=b||{};

	var c=b.id||Ext.id();
	var a=Ext.applyIf(b,this.initialConfig);
	a.id=c;
	return new this.constructor(a)
	},
getXType:function(){
	return this.constructor.xtype
	},
isXType:function(b,a){
	if(Ext.isFunction(b)){
		b=b.xtype
		}else{
		if(Ext.isObject(b)){
			b=b.constructor.xtype
			}
		}
	return !a?("/"+this.getXTypes()+"/").indexOf("/"+b+"/")!=-1:this.constructor.xtype==b
},
getXTypes:function(){
	var a=this.constructor;
	if(!a.xtypes){
		var d=[],b=this;
		while(b&&b.constructor.xtype){
			d.unshift(b.constructor.xtype);
			b=b.constructor.superclass
			}
			a.xtypeChain=d;
		a.xtypes=d.join("/")
		}
		return a.xtypes
	},
findParentBy:function(a){
	for(var b=this.ownerCt;(b!=null)&&!a(b,this);b=b.ownerCt){}
	return b||null
	},
findParentByType:function(b,a){
	return this.findParentBy(function(d){
		return d.isXType(b,a)
		})
	},
bubble:function(c,b,a){
	var d=this;
	while(d){
		if(c.apply(b||d,a||[d])===false){
			break
		}
		d=d.ownerCt
		}
		return this
	},
getPositionEl:function(){
	return this.positionEl||this.el
	},
purgeListeners:function(){
	Ext.Component.superclass.purgeListeners.call(this);
	if(this.mons){
		this.on("beforedestroy",this.clearMons,this,{
			single:true
		})
		}
	},
clearMons:function(){
	Ext.each(this.mons,function(a){
		a.item.un(a.ename,a.fn,a.scope)
		},this);
	this.mons=[]
	},
createMons:function(){
	if(!this.mons){
		this.mons=[];
		this.on("beforedestroy",this.clearMons,this,{
			single:true
		})
		}
	},
mon:function(g,b,d,c,a){
	this.createMons();
	if(Ext.isObject(b)){
		var k=/^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
		var i=b;
		for(var h in i){
			if(k.test(h)){
				continue
			}
			if(Ext.isFunction(i[h])){
				this.mons.push({
					item:g,
					ename:h,
					fn:i[h],
					scope:i.scope
					});
				g.on(h,i[h],i.scope,i)
				}else{
				this.mons.push({
					item:g,
					ename:h,
					fn:i[h],
					scope:i.scope
					});
				g.on(h,i[h])
				}
			}
		return
}
this.mons.push({
	item:g,
	ename:b,
	fn:d,
	scope:c
});
g.on(b,d,c,a)
},
mun:function(h,c,g,e){
	var k,d;
	this.createMons();
	for(var b=0,a=this.mons.length;b<a;++b){
		d=this.mons[b];
		if(h===d.item&&c==d.ename&&g===d.fn&&e===d.scope){
			this.mons.splice(b,1);
			h.un(c,g,e);
			k=true;
			break
		}
	}
	return k
},
nextSibling:function(){
	if(this.ownerCt){
		var a=this.ownerCt.items.indexOf(this);
		if(a!=-1&&a+1<this.ownerCt.items.getCount()){
			return this.ownerCt.items.itemAt(a+1)
			}
		}
	return null
},
previousSibling:function(){
	if(this.ownerCt){
		var a=this.ownerCt.items.indexOf(this);
		if(a>0){
			return this.ownerCt.items.itemAt(a-1)
			}
		}
	return null
},
getBubbleTarget:function(){
	return this.ownerCt
	}
});
Ext.reg("component",Ext.Component);
Ext.Action=Ext.extend(Object,{
	constructor:function(a){
		this.initialConfig=a;
		this.itemId=a.itemId=(a.itemId||a.id||Ext.id());
		this.items=[]
		},
	isAction:true,
	setText:function(a){
		this.initialConfig.text=a;
		this.callEach("setText",[a])
		},
	getText:function(){
		return this.initialConfig.text
		},
	setIconClass:function(a){
		this.initialConfig.iconCls=a;
		this.callEach("setIconClass",[a])
		},
	getIconClass:function(){
		return this.initialConfig.iconCls
		},
	setDisabled:function(a){
		this.initialConfig.disabled=a;
		this.callEach("setDisabled",[a])
		},
	enable:function(){
		this.setDisabled(false)
		},
	disable:function(){
		this.setDisabled(true)
		},
	isDisabled:function(){
		return this.initialConfig.disabled
		},
	setHidden:function(a){
		this.initialConfig.hidden=a;
		this.callEach("setVisible",[!a])
		},
	show:function(){
		this.setHidden(false)
		},
	hide:function(){
		this.setHidden(true)
		},
	isHidden:function(){
		return this.initialConfig.hidden
		},
	setHandler:function(b,a){
		this.initialConfig.handler=b;
		this.initialConfig.scope=a;
		this.callEach("setHandler",[b,a])
		},
	each:function(b,a){
		Ext.each(this.items,b,a)
		},
	callEach:function(e,b){
		var d=this.items;
		for(var c=0,a=d.length;c<a;c++){
			d[c][e].apply(d[c],b)
			}
		},
addComponent:function(a){
	this.items.push(a);
	a.on("destroy",this.removeComponent,this)
	},
removeComponent:function(a){
	this.items.remove(a)
	},
execute:function(){
	this.initialConfig.handler.apply(this.initialConfig.scope||window,arguments)
	}
});
(function(){
	Ext.Layer=function(d,c){
		d=d||{};

		var e=Ext.DomHelper,h=d.parentEl,g=h?Ext.getDom(h):document.body;
		if(c){
			this.dom=Ext.getDom(c)
			}
			if(!this.dom){
			var i=d.dh||{
				tag:"div",
				cls:"x-layer"
			};

			this.dom=e.append(g,i)
			}
			if(d.cls){
			this.addClass(d.cls)
			}
			this.constrain=d.constrain!==false;
		this.setVisibilityMode(Ext.Element.VISIBILITY);
		if(d.id){
			this.id=this.dom.id=d.id
			}else{
			this.id=Ext.id(this.dom)
			}
			this.zindex=d.zindex||this.getZIndex();
		this.position("absolute",this.zindex);
		if(d.shadow){
			this.shadowOffset=d.shadowOffset||4;
			this.shadow=new Ext.Shadow({
				offset:this.shadowOffset,
				mode:d.shadow
				})
			}else{
			this.shadowOffset=0
			}
			this.useShim=d.shim!==false&&Ext.useShims;
		this.useDisplay=d.useDisplay;
		this.hide()
		};

	var a=Ext.Element.prototype;
	var b=[];
	Ext.extend(Ext.Layer,Ext.Element,{
		getZIndex:function(){
			return this.zindex||parseInt((this.getShim()||this).getStyle("z-index"),10)||11000
			},
		getShim:function(){
			if(!this.useShim){
				return null
				}
				if(this.shim){
				return this.shim
				}
				var d=b.shift();
			if(!d){
				d=this.createShim();
				d.enableDisplayMode("block");
				d.dom.style.display="none";
				d.dom.style.visibility="visible"
				}
				var c=this.dom.parentNode;
			if(d.dom.parentNode!=c){
				c.insertBefore(d.dom,this.dom)
				}
				d.setStyle("z-index",this.getZIndex()-2);
			this.shim=d;
			return d
			},
		hideShim:function(){
			if(this.shim){
				this.shim.setDisplayed(false);
				b.push(this.shim);
				delete this.shim
				}
			},
	disableShadow:function(){
		if(this.shadow){
			this.shadowDisabled=true;
			this.shadow.hide();
			this.lastShadowOffset=this.shadowOffset;
			this.shadowOffset=0
			}
		},
	enableShadow:function(c){
		if(this.shadow){
			this.shadowDisabled=false;
			this.shadowOffset=this.lastShadowOffset;
			delete this.lastShadowOffset;
			if(c){
				this.sync(true)
				}
			}
	},
sync:function(d){
	var o=this.shadow;
	if(!this.updating&&this.isVisible()&&(o||this.useShim)){
		var i=this.getShim(),n=this.getWidth(),k=this.getHeight(),e=this.getLeft(true),p=this.getTop(true);
		if(o&&!this.shadowDisabled){
			if(d&&!o.isVisible()){
				o.show(this)
				}else{
				o.realign(e,p,n,k)
				}
				if(i){
				if(d){
					i.show()
					}
					var m=o.el.getXY(),g=i.dom.style,c=o.el.getSize();
				g.left=(m[0])+"px";
				g.top=(m[1])+"px";
				g.width=(c.width)+"px";
				g.height=(c.height)+"px"
				}
			}else{
		if(i){
			if(d){
				i.show()
				}
				i.setSize(n,k);
			i.setLeftTop(e,p)
			}
		}
}
},
destroy:function(){
	this.hideShim();
	if(this.shadow){
		this.shadow.hide()
		}
		this.removeAllListeners();
	Ext.removeNode(this.dom);
	delete this.dom
	},
remove:function(){
	this.destroy()
	},
beginUpdate:function(){
	this.updating=true
	},
endUpdate:function(){
	this.updating=false;
	this.sync(true)
	},
hideUnders:function(c){
	if(this.shadow){
		this.shadow.hide()
		}
		this.hideShim()
	},
constrainXY:function(){
	if(this.constrain){
		var k=Ext.lib.Dom.getViewWidth(),d=Ext.lib.Dom.getViewHeight();
		var p=Ext.getDoc().getScroll();
		var o=this.getXY();
		var l=o[0],i=o[1];
		var c=this.shadowOffset;
		var m=this.dom.offsetWidth+c,e=this.dom.offsetHeight+c;
		var g=false;
		if((l+m)>k+p.left){
			l=k-m-c;
			g=true
			}
			if((i+e)>d+p.top){
			i=d-e-c;
			g=true
			}
			if(l<p.left){
			l=p.left;
			g=true
			}
			if(i<p.top){
			i=p.top;
			g=true
			}
			if(g){
			if(this.avoidY){
				var n=this.avoidY;
				if(i<=n&&(i+e)>=n){
					i=n-e-5
					}
				}
			o=[l,i];
		this.storeXY(o);
		a.setXY.call(this,o);
		this.sync()
		}
	}
return this
},
getConstrainOffset:function(){
	return this.shadowOffset
	},
isVisible:function(){
	return this.visible
	},
showAction:function(){
	this.visible=true;
	if(this.useDisplay===true){
		this.setDisplayed("")
		}else{
		if(this.lastXY){
			a.setXY.call(this,this.lastXY)
			}else{
			if(this.lastLT){
				a.setLeftTop.call(this,this.lastLT[0],this.lastLT[1])
				}
			}
	}
},
hideAction:function(){
	this.visible=false;
	if(this.useDisplay===true){
		this.setDisplayed(false)
		}else{
		this.setLeftTop(-10000,-10000)
		}
	},
setVisible:function(i,h,l,m,k){
	if(i){
		this.showAction()
		}
		if(h&&i){
		var g=function(){
			this.sync(true);
			if(m){
				m()
				}
			}.createDelegate(this);
	a.setVisible.call(this,true,true,l,g,k)
	}else{
	if(!i){
		this.hideUnders(true)
		}
		var g=m;
	if(h){
		g=function(){
			this.hideAction();
			if(m){
				m()
				}
			}.createDelegate(this)
	}
	a.setVisible.call(this,i,h,l,g,k);
if(i){
	this.sync(true)
	}else{
	if(!h){
		this.hideAction()
		}
	}
}
return this
},
storeXY:function(c){
	delete this.lastLT;
	this.lastXY=c
	},
storeLeftTop:function(d,c){
	delete this.lastXY;
	this.lastLT=[d,c]
	},
beforeFx:function(){
	this.beforeAction();
	return Ext.Layer.superclass.beforeFx.apply(this,arguments)
	},
afterFx:function(){
	Ext.Layer.superclass.afterFx.apply(this,arguments);
	this.sync(this.isVisible())
	},
beforeAction:function(){
	if(!this.updating&&this.shadow){
		this.shadow.hide()
		}
	},
setLeft:function(c){
	this.storeLeftTop(c,this.getTop(true));
	a.setLeft.apply(this,arguments);
	this.sync();
	return this
	},
setTop:function(c){
	this.storeLeftTop(this.getLeft(true),c);
	a.setTop.apply(this,arguments);
	this.sync();
	return this
	},
setLeftTop:function(d,c){
	this.storeLeftTop(d,c);
	a.setLeftTop.apply(this,arguments);
	this.sync();
	return this
	},
setXY:function(k,h,l,m,i){
	this.fixDisplay();
	this.beforeAction();
	this.storeXY(k);
	var g=this.createCB(m);
	a.setXY.call(this,k,h,l,g,i);
	if(!h){
		g()
		}
		return this
	},
createCB:function(e){
	var d=this;
	return function(){
		d.constrainXY();
		d.sync(true);
		if(e){
			e()
			}
		}
},
setX:function(g,h,k,l,i){
	this.setXY([g,this.getY()],h,k,l,i);
	return this
	},
setY:function(l,g,i,k,h){
	this.setXY([this.getX(),l],g,i,k,h);
	return this
	},
setSize:function(k,l,i,n,o,m){
	this.beforeAction();
	var g=this.createCB(o);
	a.setSize.call(this,k,l,i,n,g,m);
	if(!i){
		g()
		}
		return this
	},
setWidth:function(i,h,l,m,k){
	this.beforeAction();
	var g=this.createCB(m);
	a.setWidth.call(this,i,h,l,g,k);
	if(!h){
		g()
		}
		return this
	},
setHeight:function(k,i,m,n,l){
	this.beforeAction();
	var g=this.createCB(n);
	a.setHeight.call(this,k,i,m,g,l);
	if(!i){
		g()
		}
		return this
	},
setBounds:function(p,n,q,i,o,l,m,k){
	this.beforeAction();
	var g=this.createCB(m);
	if(!o){
		this.storeXY([p,n]);
		a.setXY.call(this,[p,n]);
		a.setSize.call(this,q,i,o,l,g,k);
		g()
		}else{
		a.setBounds.call(this,p,n,q,i,o,l,g,k)
		}
		return this
	},
setZIndex:function(c){
	this.zindex=c;
	this.setStyle("z-index",c+2);
	if(this.shadow){
		this.shadow.setZIndex(c+1)
		}
		if(this.shim){
		this.shim.setStyle("z-index",c)
		}
		return this
	}
})
})();
Ext.Shadow=function(d){
	Ext.apply(this,d);
	if(typeof this.mode!="string"){
		this.mode=this.defaultMode
		}
		var e=this.offset,c={
		h:0
	},b=Math.floor(this.offset/2);
	switch(this.mode.toLowerCase()){
		case"drop":
			c.w=0;
			c.l=c.t=e;
			c.t-=1;
			if(Ext.isIE){
			c.l-=this.offset+b;
			c.t-=this.offset+b;
			c.w-=b;
			c.h-=b;
			c.t+=1
			}
			break;
		case"sides":
			c.w=(e*2);
			c.l=-e;
			c.t=e-1;
			if(Ext.isIE){
			c.l-=(this.offset-b);
			c.t-=this.offset+b;
			c.l+=1;
			c.w-=(this.offset-b)*2;
			c.w-=b+1;
			c.h-=1
			}
			break;
		case"frame":
			c.w=c.h=(e*2);
			c.l=c.t=-e;
			c.t+=1;
			c.h-=2;
			if(Ext.isIE){
			c.l-=(this.offset-b);
			c.t-=(this.offset-b);
			c.l+=1;
			c.w-=(this.offset+b+1);
			c.h-=(this.offset+b);
			c.h+=1
			}
			break
		}
		this.adjusts=c
	};

Ext.Shadow.prototype={
	offset:4,
	defaultMode:"drop",
	show:function(a){
		a=Ext.get(a);
		if(!this.el){
			this.el=Ext.Shadow.Pool.pull();
			if(this.el.dom.nextSibling!=a.dom){
				this.el.insertBefore(a)
				}
			}
		this.el.setStyle("z-index",this.zIndex||parseInt(a.getStyle("z-index"),10)-1);
	if(Ext.isIE){
		this.el.dom.style.filter="progid:DXImageTransform.Microsoft.alpha(opacity=50) progid:DXImageTransform.Microsoft.Blur(pixelradius="+(this.offset)+")"
		}
		this.realign(a.getLeft(true),a.getTop(true),a.getWidth(),a.getHeight());
	this.el.dom.style.display="block"
	},
isVisible:function(){
	return this.el?true:false
	},
realign:function(b,u,r,g){
	if(!this.el){
		return
	}
	var o=this.adjusts,m=this.el.dom,v=m.style,i=0,q=(r+o.w),e=(g+o.h),k=q+"px",p=e+"px",n,c;
	v.left=(b+o.l)+"px";
	v.top=(u+o.t)+"px";
	if(v.width!=k||v.height!=p){
		v.width=k;
		v.height=p;
		if(!Ext.isIE){
			n=m.childNodes;
			c=Math.max(0,(q-12))+"px";
			n[0].childNodes[1].style.width=c;
			n[1].childNodes[1].style.width=c;
			n[2].childNodes[1].style.width=c;
			n[1].style.height=Math.max(0,(e-12))+"px"
			}
		}
},
hide:function(){
	if(this.el){
		this.el.dom.style.display="none";
		Ext.Shadow.Pool.push(this.el);
		delete this.el
		}
	},
setZIndex:function(a){
	this.zIndex=a;
	if(this.el){
		this.el.setStyle("z-index",a)
		}
	}
};

Ext.Shadow.Pool=function(){
	var b=[],a=Ext.isIE?'<div class="x-ie-shadow"></div>':'<div class="x-shadow"><div class="xst"><div class="xstl"></div><div class="xstc"></div><div class="xstr"></div></div><div class="xsc"><div class="xsml"></div><div class="xsmc"></div><div class="xsmr"></div></div><div class="xsb"><div class="xsbl"></div><div class="xsbc"></div><div class="xsbr"></div></div></div>';
	return{
		pull:function(){
			var c=b.shift();
			if(!c){
				c=Ext.get(Ext.DomHelper.insertHtml("beforeBegin",document.body.firstChild,a));
				c.autoBoxAdjust=false
				}
				return c
			},
		push:function(c){
			b.push(c)
			}
		}
}();
Ext.BoxComponent=Ext.extend(Ext.Component,{
	initComponent:function(){
		Ext.BoxComponent.superclass.initComponent.call(this);
		this.addEvents("resize","move")
		},
	boxReady:false,
	deferHeight:false,
	setSize:function(b,d){
		if(typeof b=="object"){
			d=b.height;
			b=b.width
			}
			if(Ext.isDefined(b)&&Ext.isDefined(this.boxMinWidth)&&(b<this.boxMinWidth)){
			b=this.boxMinWidth
			}
			if(Ext.isDefined(d)&&Ext.isDefined(this.boxMinHeight)&&(d<this.boxMinHeight)){
			d=this.boxMinHeight
			}
			if(Ext.isDefined(b)&&Ext.isDefined(this.boxMaxWidth)&&(b>this.boxMaxWidth)){
			b=this.boxMaxWidth
			}
			if(Ext.isDefined(d)&&Ext.isDefined(this.boxMaxHeight)&&(d>this.boxMaxHeight)){
			d=this.boxMaxHeight
			}
			if(!this.boxReady){
			this.width=b;
			this.height=d;
			return this
			}
			if(this.cacheSizes!==false&&this.lastSize&&this.lastSize.width==b&&this.lastSize.height==d){
			return this
			}
			this.lastSize={
			width:b,
			height:d
		};

		var c=this.adjustSize(b,d),g=c.width,a=c.height,e;
		if(g!==undefined||a!==undefined){
			e=this.getResizeEl();
			if(!this.deferHeight&&g!==undefined&&a!==undefined){
				e.setSize(g,a)
				}else{
				if(!this.deferHeight&&a!==undefined){
					e.setHeight(a)
					}else{
					if(g!==undefined){
						e.setWidth(g)
						}
					}
			}
		this.onResize(g,a,b,d);
	this.fireEvent("resize",this,g,a,b,d)
	}
	return this
},
setWidth:function(a){
	return this.setSize(a)
	},
setHeight:function(a){
	return this.setSize(undefined,a)
	},
getSize:function(){
	return this.getResizeEl().getSize()
	},
getWidth:function(){
	return this.getResizeEl().getWidth()
	},
getHeight:function(){
	return this.getResizeEl().getHeight()
	},
getOuterSize:function(){
	var a=this.getResizeEl();
	return{
		width:a.getWidth()+a.getMargins("lr"),
		height:a.getHeight()+a.getMargins("tb")
		}
	},
getPosition:function(a){
	var b=this.getPositionEl();
	if(a===true){
		return[b.getLeft(true),b.getTop(true)]
		}
		return this.xy||b.getXY()
	},
getBox:function(a){
	var c=this.getPosition(a);
	var b=this.getSize();
	b.x=c[0];
	b.y=c[1];
	return b
	},
updateBox:function(a){
	this.setSize(a.width,a.height);
	this.setPagePosition(a.x,a.y);
	return this
	},
getResizeEl:function(){
	return this.resizeEl||this.el
	},
setAutoScroll:function(a){
	if(this.rendered){
		this.getContentTarget().setOverflow(a?"auto":"")
		}
		this.autoScroll=a;
	return this
	},
setPosition:function(a,g){
	if(a&&typeof a[1]=="number"){
		g=a[1];
		a=a[0]
		}
		this.x=a;
	this.y=g;
	if(!this.boxReady){
		return this
		}
		var b=this.adjustPosition(a,g);
	var e=b.x,d=b.y;
	var c=this.getPositionEl();
	if(e!==undefined||d!==undefined){
		if(e!==undefined&&d!==undefined){
			c.setLeftTop(e,d)
			}else{
			if(e!==undefined){
				c.setLeft(e)
				}else{
				if(d!==undefined){
					c.setTop(d)
					}
				}
		}
	this.onPosition(e,d);
this.fireEvent("move",this,e,d)
}
return this
},
setPagePosition:function(a,c){
	if(a&&typeof a[1]=="number"){
		c=a[1];
		a=a[0]
		}
		this.pageX=a;
	this.pageY=c;
	if(!this.boxReady){
		return
	}
	if(a===undefined||c===undefined){
		return
	}
	var b=this.getPositionEl().translatePoints(a,c);
	this.setPosition(b.left,b.top);
	return this
	},
afterRender:function(){
	Ext.BoxComponent.superclass.afterRender.call(this);
	if(this.resizeEl){
		this.resizeEl=Ext.get(this.resizeEl)
		}
		if(this.positionEl){
		this.positionEl=Ext.get(this.positionEl)
		}
		this.boxReady=true;
	Ext.isDefined(this.autoScroll)&&this.setAutoScroll(this.autoScroll);
	this.setSize(this.width,this.height);
	if(this.x||this.y){
		this.setPosition(this.x,this.y)
		}else{
		if(this.pageX||this.pageY){
			this.setPagePosition(this.pageX,this.pageY)
			}
		}
},
syncSize:function(){
	delete this.lastSize;
	this.setSize(this.autoWidth?undefined:this.getResizeEl().getWidth(),this.autoHeight?undefined:this.getResizeEl().getHeight());
	return this
	},
onResize:function(d,b,a,c){},
onPosition:function(a,b){},
adjustSize:function(a,b){
	if(this.autoWidth){
		a="auto"
		}
		if(this.autoHeight){
		b="auto"
		}
		return{
		width:a,
		height:b
	}
},
adjustPosition:function(a,b){
	return{
		x:a,
		y:b
	}
}
});
Ext.reg("box",Ext.BoxComponent);
Ext.Spacer=Ext.extend(Ext.BoxComponent,{
	autoEl:"div"
});
Ext.reg("spacer",Ext.Spacer);
Ext.SplitBar=function(c,e,b,d,a){
	this.el=Ext.get(c,true);
	this.el.dom.unselectable="on";
	this.resizingEl=Ext.get(e,true);
	this.orientation=b||Ext.SplitBar.HORIZONTAL;
	this.minSize=0;
	this.maxSize=2000;
	this.animate=false;
	this.useShim=false;
	this.shim=null;
	if(!a){
		this.proxy=Ext.SplitBar.createProxy(this.orientation)
		}else{
		this.proxy=Ext.get(a).dom
		}
		this.dd=new Ext.dd.DDProxy(this.el.dom.id,"XSplitBars",{
		dragElId:this.proxy.id
		});
	this.dd.b4StartDrag=this.onStartProxyDrag.createDelegate(this);
	this.dd.endDrag=this.onEndProxyDrag.createDelegate(this);
	this.dragSpecs={};

	this.adapter=new Ext.SplitBar.BasicLayoutAdapter();
	this.adapter.init(this);
	if(this.orientation==Ext.SplitBar.HORIZONTAL){
		this.placement=d||(this.el.getX()>this.resizingEl.getX()?Ext.SplitBar.LEFT:Ext.SplitBar.RIGHT);
		this.el.addClass("x-splitbar-h")
		}else{
		this.placement=d||(this.el.getY()>this.resizingEl.getY()?Ext.SplitBar.TOP:Ext.SplitBar.BOTTOM);
		this.el.addClass("x-splitbar-v")
		}
		this.addEvents("resize","moved","beforeresize","beforeapply");
	Ext.SplitBar.superclass.constructor.call(this)
	};

Ext.extend(Ext.SplitBar,Ext.util.Observable,{
	onStartProxyDrag:function(a,e){
		this.fireEvent("beforeresize",this);
		this.overlay=Ext.DomHelper.append(document.body,{
			cls:"x-drag-overlay",
			html:"&#160;"
		},true);
		this.overlay.unselectable();
		this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));
		this.overlay.show();
		Ext.get(this.proxy).setDisplayed("block");
		var c=this.adapter.getElementSize(this);
		this.activeMinSize=this.getMinimumSize();
		this.activeMaxSize=this.getMaximumSize();
		var d=c-this.activeMinSize;
		var b=Math.max(this.activeMaxSize-c,0);
		if(this.orientation==Ext.SplitBar.HORIZONTAL){
			this.dd.resetConstraints();
			this.dd.setXConstraint(this.placement==Ext.SplitBar.LEFT?d:b,this.placement==Ext.SplitBar.LEFT?b:d,this.tickSize);
			this.dd.setYConstraint(0,0)
			}else{
			this.dd.resetConstraints();
			this.dd.setXConstraint(0,0);
			this.dd.setYConstraint(this.placement==Ext.SplitBar.TOP?d:b,this.placement==Ext.SplitBar.TOP?b:d,this.tickSize)
			}
			this.dragSpecs.startSize=c;
		this.dragSpecs.startPoint=[a,e];
		Ext.dd.DDProxy.prototype.b4StartDrag.call(this.dd,a,e)
		},
	onEndProxyDrag:function(c){
		Ext.get(this.proxy).setDisplayed(false);
		var b=Ext.lib.Event.getXY(c);
		if(this.overlay){
			Ext.destroy(this.overlay);
			delete this.overlay
			}
			var a;
		if(this.orientation==Ext.SplitBar.HORIZONTAL){
			a=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.LEFT?b[0]-this.dragSpecs.startPoint[0]:this.dragSpecs.startPoint[0]-b[0])
			}else{
			a=this.dragSpecs.startSize+(this.placement==Ext.SplitBar.TOP?b[1]-this.dragSpecs.startPoint[1]:this.dragSpecs.startPoint[1]-b[1])
			}
			a=Math.min(Math.max(a,this.activeMinSize),this.activeMaxSize);
		if(a!=this.dragSpecs.startSize){
			if(this.fireEvent("beforeapply",this,a)!==false){
				this.adapter.setElementSize(this,a);
				this.fireEvent("moved",this,a);
				this.fireEvent("resize",this,a)
				}
			}
	},
getAdapter:function(){
	return this.adapter
	},
setAdapter:function(a){
	this.adapter=a;
	this.adapter.init(this)
	},
getMinimumSize:function(){
	return this.minSize
	},
setMinimumSize:function(a){
	this.minSize=a
	},
getMaximumSize:function(){
	return this.maxSize
	},
setMaximumSize:function(a){
	this.maxSize=a
	},
setCurrentSize:function(b){
	var a=this.animate;
	this.animate=false;
	this.adapter.setElementSize(this,b);
	this.animate=a
	},
destroy:function(a){
	Ext.destroy(this.shim,Ext.get(this.proxy));
	this.dd.unreg();
	if(a){
		this.el.remove()
		}
		this.purgeListeners()
	}
});
Ext.SplitBar.createProxy=function(b){
	var c=new Ext.Element(document.createElement("div"));
	document.body.appendChild(c.dom);
	c.unselectable();
	var a="x-splitbar-proxy";
	c.addClass(a+" "+(b==Ext.SplitBar.HORIZONTAL?a+"-h":a+"-v"));
	return c.dom
	};

Ext.SplitBar.BasicLayoutAdapter=function(){};

Ext.SplitBar.BasicLayoutAdapter.prototype={
	init:function(a){},
	getElementSize:function(a){
		if(a.orientation==Ext.SplitBar.HORIZONTAL){
			return a.resizingEl.getWidth()
			}else{
			return a.resizingEl.getHeight()
			}
		},
setElementSize:function(b,a,c){
	if(b.orientation==Ext.SplitBar.HORIZONTAL){
		if(!b.animate){
			b.resizingEl.setWidth(a);
			if(c){
				c(b,a)
				}
			}else{
		b.resizingEl.setWidth(a,true,0.1,c,"easeOut")
		}
	}else{
	if(!b.animate){
		b.resizingEl.setHeight(a);
		if(c){
			c(b,a)
			}
		}else{
	b.resizingEl.setHeight(a,true,0.1,c,"easeOut")
	}
}
}
};

Ext.SplitBar.AbsoluteLayoutAdapter=function(a){
	this.basic=new Ext.SplitBar.BasicLayoutAdapter();
	this.container=Ext.get(a)
	};

Ext.SplitBar.AbsoluteLayoutAdapter.prototype={
	init:function(a){
		this.basic.init(a)
		},
	getElementSize:function(a){
		return this.basic.getElementSize(a)
		},
	setElementSize:function(b,a,c){
		this.basic.setElementSize(b,a,this.moveSplitter.createDelegate(this,[b]))
		},
	moveSplitter:function(a){
		var b=Ext.SplitBar;
		switch(a.placement){
			case b.LEFT:
				a.el.setX(a.resizingEl.getRight());
				break;
			case b.RIGHT:
				a.el.setStyle("right",(this.container.getWidth()-a.resizingEl.getLeft())+"px");
				break;
			case b.TOP:
				a.el.setY(a.resizingEl.getBottom());
				break;
			case b.BOTTOM:
				a.el.setY(a.resizingEl.getTop()-a.el.getHeight());
				break
				}
			}
};

Ext.SplitBar.VERTICAL=1;
Ext.SplitBar.HORIZONTAL=2;
Ext.SplitBar.LEFT=1;
Ext.SplitBar.RIGHT=2;
Ext.SplitBar.TOP=3;
Ext.SplitBar.BOTTOM=4;
Ext.Container=Ext.extend(Ext.BoxComponent,{
	bufferResize:50,
	autoDestroy:true,
	forceLayout:false,
	defaultType:"panel",
	resizeEvent:"resize",
	bubbleEvents:["add","remove"],
	initComponent:function(){
		Ext.Container.superclass.initComponent.call(this);
		this.addEvents("afterlayout","beforeadd","beforeremove","add","remove");
		var a=this.items;
		if(a){
			delete this.items;
			this.add(a)
			}
		},
initItems:function(){
	if(!this.items){
		this.items=new Ext.util.MixedCollection(false,this.getComponentId);
		this.getLayout()
		}
	},
setLayout:function(a){
	if(this.layout&&this.layout!=a){
		this.layout.setContainer(null)
		}
		this.layout=a;
	this.initItems();
	a.setContainer(this)
	},
afterRender:function(){
	Ext.Container.superclass.afterRender.call(this);
	if(!this.layout){
		this.layout="auto"
		}
		if(Ext.isObject(this.layout)&&!this.layout.layout){
		this.layoutConfig=this.layout;
		this.layout=this.layoutConfig.type
		}
		if(Ext.isString(this.layout)){
		this.layout=new Ext.Container.LAYOUTS[this.layout.toLowerCase()](this.layoutConfig)
		}
		this.setLayout(this.layout);
	if(this.activeItem!==undefined&&this.layout.setActiveItem){
		var a=this.activeItem;
		delete this.activeItem;
		this.layout.setActiveItem(a)
		}
		if(!this.ownerCt){
		this.doLayout(false,true)
		}
		if(this.monitorResize===true){
		Ext.EventManager.onWindowResize(this.doLayout,this,[false])
		}
	},
getLayoutTarget:function(){
	return this.el
	},
getComponentId:function(a){
	return a.getItemId()
	},
add:function(b){
	this.initItems();
	var e=arguments.length>1;
	if(e||Ext.isArray(b)){
		var a=[];
		Ext.each(e?arguments:b,function(h){
			a.push(this.add(h))
			},this);
		return a
		}
		var g=this.lookupComponent(this.applyDefaults(b));
	var d=this.items.length;
	if(this.fireEvent("beforeadd",this,g,d)!==false&&this.onBeforeAdd(g)!==false){
		this.items.add(g);
		g.onAdded(this,d);
		this.onAdd(g);
		this.fireEvent("add",this,g,d)
		}
		return g
	},
onAdd:function(a){},
onAdded:function(a,b){
	this.ownerCt=a;
	this.initRef();
	this.cascade(function(d){
		d.initRef()
		});
	this.fireEvent("added",this,a,b)
	},
insert:function(e,b){
	var d=arguments,h=d.length,a=[],g,k;
	this.initItems();
	if(h>2){
		for(g=h-1;g>=1;--g){
			a.push(this.insert(e,d[g]))
			}
			return a
		}
		k=this.lookupComponent(this.applyDefaults(b));
	e=Math.min(e,this.items.length);
	if(this.fireEvent("beforeadd",this,k,e)!==false&&this.onBeforeAdd(k)!==false){
		if(k.ownerCt==this){
			this.items.remove(k)
			}
			this.items.insert(e,k);
		k.onAdded(this,e);
		this.onAdd(k);
		this.fireEvent("add",this,k,e)
		}
		return k
	},
applyDefaults:function(b){
	var a=this.defaults;
	if(a){
		if(Ext.isFunction(a)){
			a=a.call(this,b)
			}
			if(Ext.isString(b)){
			b=Ext.ComponentMgr.get(b);
			Ext.apply(b,a)
			}else{
			if(!b.events){
				Ext.applyIf(b.isAction?b.initialConfig:b,a)
				}else{
				Ext.apply(b,a)
				}
			}
	}
return b
},
onBeforeAdd:function(a){
	if(a.ownerCt){
		a.ownerCt.remove(a,false)
		}
		if(this.hideBorders===true){
		a.border=(a.border===true)
		}
	},
remove:function(a,b){
	this.initItems();
	var d=this.getComponent(a);
	if(d&&this.fireEvent("beforeremove",this,d)!==false){
		this.doRemove(d,b);
		this.fireEvent("remove",this,d)
		}
		return d
	},
onRemove:function(a){},
doRemove:function(e,d){
	var b=this.layout,a=b&&this.rendered;
	if(a){
		b.onRemove(e)
		}
		this.items.remove(e);
	e.onRemoved();
	this.onRemove(e);
	if(d===true||(d!==false&&this.autoDestroy)){
		e.destroy()
		}
		if(a){
		b.afterRemove(e)
		}
	},
removeAll:function(c){
	this.initItems();
	var e,g=[],b=[];
	this.items.each(function(h){
		g.push(h)
		});
	for(var d=0,a=g.length;d<a;++d){
		e=g[d];
		this.remove(e,c);
		if(e.ownerCt!==this){
			b.push(e)
			}
		}
	return b
},
getComponent:function(a){
	if(Ext.isObject(a)){
		a=a.getItemId()
		}
		return this.items.get(a)
	},
lookupComponent:function(a){
	if(Ext.isString(a)){
		return Ext.ComponentMgr.get(a)
		}else{
		if(!a.events){
			return this.createComponent(a)
			}
		}
	return a
},
createComponent:function(a,d){
	if(a.render){
		return a
		}
		var b=Ext.create(Ext.apply({
		ownerCt:this
	},a),d||this.defaultType);
	delete b.initialConfig.ownerCt;
	delete b.ownerCt;
	return b
	},
canLayout:function(){
	var a=this.getVisibilityEl();
	return a&&a.dom&&!a.isStyle("display","none")
	},
doLayout:function(g,e){
	var l=this.rendered,k=e||this.forceLayout;
	if(this.collapsed||!this.canLayout()){
		this.deferLayout=this.deferLayout||!g;
		if(!k){
			return
		}
		g=g&&!this.deferLayout
		}else{
		delete this.deferLayout
		}
		if(l&&this.layout){
		this.layout.layout()
		}
		if(g!==true&&this.items){
		var d=this.items.items;
		for(var b=0,a=d.length;b<a;b++){
			var h=d[b];
			if(h.doLayout){
				h.doLayout(false,k)
				}
			}
		}
	if(l){
	this.onLayout(g,k)
	}
	this.hasLayout=true;
delete this.forceLayout
},
onLayout:Ext.emptyFn,
shouldBufferLayout:function(){
	var a=this.hasLayout;
	if(this.ownerCt){
		return a?!this.hasLayoutPending():false
		}
		return a
	},
hasLayoutPending:function(){
	var a=false;
	this.ownerCt.bubble(function(b){
		if(b.layoutPending){
			a=true;
			return false
			}
		});
return a
},
onShow:function(){
	Ext.Container.superclass.onShow.call(this);
	if(Ext.isDefined(this.deferLayout)){
		delete this.deferLayout;
		this.doLayout(true)
		}
	},
getLayout:function(){
	if(!this.layout){
		var a=new Ext.layout.AutoLayout(this.layoutConfig);
		this.setLayout(a)
		}
		return this.layout
	},
beforeDestroy:function(){
	var a;
	if(this.items){
		while(a=this.items.first()){
			this.doRemove(a,true)
			}
		}
	if(this.monitorResize){
	Ext.EventManager.removeResizeListener(this.doLayout,this)
	}
	Ext.destroy(this.layout);
Ext.Container.superclass.beforeDestroy.call(this)
},
cascade:function(g,e,b){
	if(g.apply(e||this,b||[this])!==false){
		if(this.items){
			var d=this.items.items;
			for(var c=0,a=d.length;c<a;c++){
				if(d[c].cascade){
					d[c].cascade(g,e,b)
					}else{
					g.apply(e||d[c],b||[d[c]])
					}
				}
			}
	}
return this
},
findById:function(c){
	var a=null,b=this;
	this.cascade(function(d){
		if(b!=d&&d.id===c){
			a=d;
			return false
			}
		});
return a
},
findByType:function(b,a){
	return this.findBy(function(d){
		return d.isXType(b,a)
		})
	},
find:function(b,a){
	return this.findBy(function(d){
		return d[b]===a
		})
	},
findBy:function(d,c){
	var a=[],b=this;
	this.cascade(function(e){
		if(b!=e&&d.call(c||e,e,b)===true){
			a.push(e)
			}
		});
return a
},
get:function(a){
	return this.getComponent(a)
	}
});
Ext.Container.LAYOUTS={};

Ext.reg("container",Ext.Container);
Ext.layout.ContainerLayout=Ext.extend(Object,{
	monitorResize:false,
	activeItem:null,
	constructor:function(a){
		this.id=Ext.id(null,"ext-layout-");
		Ext.apply(this,a)
		},
	type:"container",
	IEMeasureHack:function(l,g){
		var a=l.dom.childNodes,b=a.length,o,n=[],m,h,k;
		for(h=0;h<b;h++){
			o=a[h];
			m=Ext.get(o);
			if(m){
				n[h]=m.getStyle("display");
				m.setStyle({
					display:"none"
				})
				}
			}
		k=l?l.getViewSize(g):{};

	for(h=0;h<b;h++){
		o=a[h];
		m=Ext.get(o);
		if(m){
			m.setStyle({
				display:n[h]
				})
			}
		}
	return k
},
getLayoutTargetSize:Ext.EmptyFn,
layout:function(){
	var a=this.container,b=a.getLayoutTarget();
	if(!(this.hasLayout||Ext.isEmpty(this.targetCls))){
		b.addClass(this.targetCls)
		}
		this.onLayout(a,b);
	a.fireEvent("afterlayout",a,this)
	},
onLayout:function(a,b){
	this.renderAll(a,b)
	},
isValidParent:function(b,a){
	return a&&b.getPositionEl().dom.parentNode==(a.dom||a)
	},
renderAll:function(e,g){
	var b=e.items.items,d,h,a=b.length;
	for(d=0;d<a;d++){
		h=b[d];
		if(h&&(!h.rendered||!this.isValidParent(h,g))){
			this.renderItem(h,d,g)
			}
		}
	},
renderItem:function(d,a,b){
	if(d){
		if(!d.rendered){
			d.render(b,a);
			this.configureItem(d)
			}else{
			if(!this.isValidParent(d,b)){
				if(Ext.isNumber(a)){
					a=b.dom.childNodes[a]
					}
					b.dom.insertBefore(d.getPositionEl().dom,a||null);
				d.container=b;
				this.configureItem(d)
				}
			}
	}
},
getRenderedItems:function(g){
	var e=g.getLayoutTarget(),h=g.items.items,a=h.length,d,k,b=[];
	for(d=0;d<a;d++){
		if((k=h[d]).rendered&&this.isValidParent(k,e)&&k.shouldLayout!==false){
			b.push(k)
			}
		}
	return b
},
configureItem:function(b){
	if(this.extraCls){
		var a=b.getPositionEl?b.getPositionEl():b;
		a.addClass(this.extraCls)
		}
		if(b.doLayout&&this.forceLayout){
		b.doLayout()
		}
		if(this.renderHidden&&b!=this.activeItem){
		b.hide()
		}
	},
onRemove:function(b){
	if(this.activeItem==b){
		delete this.activeItem
		}
		if(b.rendered&&this.extraCls){
		var a=b.getPositionEl?b.getPositionEl():b;
		a.removeClass(this.extraCls)
		}
	},
afterRemove:function(a){
	if(a.removeRestore){
		a.removeMode="container";
		delete a.removeRestore
		}
	},
onResize:function(){
	var c=this.container,a;
	if(c.collapsed){
		return
	}
	if(a=c.bufferResize&&c.shouldBufferLayout()){
		if(!this.resizeTask){
			this.resizeTask=new Ext.util.DelayedTask(this.runLayout,this);
			this.resizeBuffer=Ext.isNumber(a)?a:50
			}
			c.layoutPending=true;
		this.resizeTask.delay(this.resizeBuffer)
		}else{
		this.runLayout()
		}
	},
runLayout:function(){
	var a=this.container;
	this.layout();
	a.onLayout();
	delete a.layoutPending
	},
setContainer:function(b){
	if(this.monitorResize&&b!=this.container){
		var a=this.container;
		if(a){
			a.un(a.resizeEvent,this.onResize,this)
			}
			if(b){
			b.on(b.resizeEvent,this.onResize,this)
			}
		}
	this.container=b
},
parseMargins:function(b){
	if(Ext.isNumber(b)){
		b=b.toString()
		}
		var c=b.split(" "),a=c.length;
	if(a==1){
		c[1]=c[2]=c[3]=c[0]
		}else{
		if(a==2){
			c[2]=c[0];
			c[3]=c[1]
			}else{
			if(a==3){
				c[3]=c[1]
				}
			}
	}
return{
	top:parseInt(c[0],10)||0,
	right:parseInt(c[1],10)||0,
	bottom:parseInt(c[2],10)||0,
	left:parseInt(c[3],10)||0
	}
},
fieldTpl:(function(){
	var a=new Ext.Template('<div class="x-form-item {itemCls}" tabIndex="-1">','<label for="{id}" style="{labelStyle}" class="x-form-item-label">{label}{labelSeparator}</label>','<div class="x-form-element" id="x-form-el-{id}" style="{elementStyle}">','</div><div class="{clearCls}"></div>',"</div>");
	a.disableFormats=true;
	return a.compile()
	})(),
destroy:function(){
	if(this.resizeTask&&this.resizeTask.cancel){
		this.resizeTask.cancel()
		}
		if(this.container){
		this.container.un(this.container.resizeEvent,this.onResize,this)
		}
		if(!Ext.isEmpty(this.targetCls)){
		var a=this.container.getLayoutTarget();
		if(a){
			a.removeClass(this.targetCls)
			}
		}
}
});
Ext.layout.AutoLayout=Ext.extend(Ext.layout.ContainerLayout,{
	type:"auto",
	monitorResize:true,
	onLayout:function(d,g){
		Ext.layout.AutoLayout.superclass.onLayout.call(this,d,g);
		var e=this.getRenderedItems(d),a=e.length,b,h;
		for(b=0;b<a;b++){
			h=e[b];
			if(h.doLayout){
				h.doLayout(true)
				}
			}
		}
});
Ext.Container.LAYOUTS.auto=Ext.layout.AutoLayout;
Ext.layout.FitLayout=Ext.extend(Ext.layout.ContainerLayout,{
	monitorResize:true,
	type:"fit",
	getLayoutTargetSize:function(){
		var a=this.container.getLayoutTarget();
		if(!a){
			return{}
		}
		return a.getStyleSize()
	},
onLayout:function(a,b){
	Ext.layout.FitLayout.superclass.onLayout.call(this,a,b);
	if(!a.collapsed){
		this.setItemSize(this.activeItem||a.items.itemAt(0),this.getLayoutTargetSize())
		}
	},
setItemSize:function(b,a){
	if(b&&a.height>0){
		b.setSize(a)
		}
	}
});
Ext.Container.LAYOUTS.fit=Ext.layout.FitLayout;
Ext.layout.CardLayout=Ext.extend(Ext.layout.FitLayout,{
	deferredRender:false,
	layoutOnCardChange:false,
	renderHidden:true,
	type:"card",
	setActiveItem:function(d){
		var a=this.activeItem,b=this.container;
		d=b.getComponent(d);
		if(d&&a!=d){
			if(a){
				a.hide();
				if(a.hidden!==true){
					return false
					}
					a.fireEvent("deactivate",a)
				}
				var c=d.doLayout&&(this.layoutOnCardChange||!d.rendered);
			this.activeItem=d;
			delete d.deferLayout;
			d.show();
			this.layout();
			if(c){
				d.doLayout()
				}
				d.fireEvent("activate",d)
			}
		},
renderAll:function(a,b){
	if(this.deferredRender){
		this.renderItem(this.activeItem,undefined,b)
		}else{
		Ext.layout.CardLayout.superclass.renderAll.call(this,a,b)
		}
	}
});
Ext.Container.LAYOUTS.card=Ext.layout.CardLayout;
Ext.layout.AnchorLayout=Ext.extend(Ext.layout.ContainerLayout,{
	monitorResize:true,
	type:"anchor",
	defaultAnchor:"100%",
	parseAnchorRE:/^(r|right|b|bottom)$/i,
	getLayoutTargetSize:function(){
		var b=this.container.getLayoutTarget(),a={};

		if(b){
			a=b.getViewSize();
			if(Ext.isIE&&Ext.isStrict&&a.width==0){
				a=b.getStyleSize()
				}
				a.width-=b.getPadding("lr");
			a.height-=b.getPadding("tb")
			}
			return a
		},
	onLayout:function(n,x){
		Ext.layout.AnchorLayout.superclass.onLayout.call(this,n,x);
		var q=this.getLayoutTargetSize(),l=q.width,p=q.height,r=x.getStyle("overflow"),o=this.getRenderedItems(n),u=o.length,g=[],k,a,w,m,h,c,e,d,v=0,t,b;
		if(l<20&&p<20){
			return
		}
		if(n.anchorSize){
			if(typeof n.anchorSize=="number"){
				a=n.anchorSize
				}else{
				a=n.anchorSize.width;
				w=n.anchorSize.height
				}
			}else{
		a=n.initialConfig.width;
		w=n.initialConfig.height
		}
		for(t=0;t<u;t++){
		m=o[t];
		b=m.getPositionEl();
		if(!m.anchor&&m.items&&!Ext.isNumber(m.width)&&!(Ext.isIE6&&Ext.isStrict)){
			m.anchor=this.defaultAnchor
			}
			if(m.anchor){
			h=m.anchorSpec;
			if(!h){
				d=m.anchor.split(" ");
				m.anchorSpec=h={
					right:this.parseAnchor(d[0],m.initialConfig.width,a),
					bottom:this.parseAnchor(d[1],m.initialConfig.height,w)
					}
				}
			c=h.right?this.adjustWidthAnchor(h.right(l)-b.getMargins("lr"),m):undefined;
		e=h.bottom?this.adjustHeightAnchor(h.bottom(p)-b.getMargins("tb"),m):undefined;
		if(c||e){
			g.push({
				component:m,
				width:c||undefined,
				height:e||undefined
				})
			}
		}
	}
for(t=0,u=g.length;t<u;t++){
	k=g[t];
	k.component.setSize(k.width,k.height)
	}
	if(r&&r!="hidden"&&!this.adjustmentPass){
	var s=this.getLayoutTargetSize();
	if(s.width!=q.width||s.height!=q.height){
		this.adjustmentPass=true;
		this.onLayout(n,x)
		}
	}
delete this.adjustmentPass
},
parseAnchor:function(c,h,b){
	if(c&&c!="none"){
		var e;
		if(this.parseAnchorRE.test(c)){
			var g=b-h;
			return function(a){
				if(a!==e){
					e=a;
					return a-g
					}
				}
		}else{
	if(c.indexOf("%")!=-1){
		var d=parseFloat(c.replace("%",""))*0.01;
		return function(a){
			if(a!==e){
				e=a;
				return Math.floor(a*d)
				}
			}
	}else{
	c=parseInt(c,10);
	if(!isNaN(c)){
		return function(a){
			if(a!==e){
				e=a;
				return a+c
				}
			}
	}
}
}
}
return false
},
adjustWidthAnchor:function(b,a){
	return b
	},
adjustHeightAnchor:function(b,a){
	return b
	}
});
Ext.Container.LAYOUTS.anchor=Ext.layout.AnchorLayout;
Ext.layout.ColumnLayout=Ext.extend(Ext.layout.ContainerLayout,{
	monitorResize:true,
	type:"column",
	extraCls:"x-column",
	scrollOffset:0,
	targetCls:"x-column-layout-ct",
	isValidParent:function(b,a){
		return this.innerCt&&b.getPositionEl().dom.parentNode==this.innerCt.dom
		},
	getLayoutTargetSize:function(){
		var b=this.container.getLayoutTarget(),a;
		if(b){
			a=b.getViewSize();
			if(Ext.isIE&&Ext.isStrict&&a.width==0){
				a=b.getStyleSize()
				}
				a.width-=b.getPadding("lr");
			a.height-=b.getPadding("tb")
			}
			return a
		},
	renderAll:function(a,b){
		if(!this.innerCt){
			this.innerCt=b.createChild({
				cls:"x-column-inner"
			});
			this.innerCt.createChild({
				cls:"x-clear"
			})
			}
			Ext.layout.ColumnLayout.superclass.renderAll.call(this,a,this.innerCt)
		},
	onLayout:function(e,l){
		var g=e.items.items,k=g.length,o,b,a,p=[];
		this.renderAll(e,l);
		var s=this.getLayoutTargetSize();
		if(s.width<1&&s.height<1){
			return
		}
		var q=s.width-this.scrollOffset,d=s.height,r=q;
		this.innerCt.setWidth(q);
		for(b=0;b<k;b++){
			o=g[b];
			a=o.getPositionEl().getMargins("lr");
			p[b]=a;
			if(!o.columnWidth){
				r-=(o.getWidth()+a)
				}
			}
		r=r<0?0:r;
	for(b=0;b<k;b++){
		o=g[b];
		a=p[b];
		if(o.columnWidth){
			o.setSize(Math.floor(o.columnWidth*r)-a)
			}
		}
	if(Ext.isIE){
	if(b=l.getStyle("overflow")&&b!="hidden"&&!this.adjustmentPass){
		var n=this.getLayoutTargetSize();
		if(n.width!=s.width){
			this.adjustmentPass=true;
			this.onLayout(e,l)
			}
		}
}
delete this.adjustmentPass
}
});
Ext.Container.LAYOUTS.column=Ext.layout.ColumnLayout;
Ext.layout.BorderLayout=Ext.extend(Ext.layout.ContainerLayout,{
	monitorResize:true,
	rendered:false,
	type:"border",
	targetCls:"x-border-layout-ct",
	getLayoutTargetSize:function(){
		var a=this.container.getLayoutTarget();
		return a?a.getViewSize():{}
	},
onLayout:function(g,J){
	var k,C,G,p,y=g.items.items,D=y.length;
	if(!this.rendered){
		k=[];
		for(C=0;C<D;C++){
			G=y[C];
			p=G.region;
			if(G.collapsed){
				k.push(G)
				}
				G.collapsed=false;
			if(!G.rendered){
				G.render(J,C);
				G.getPositionEl().addClass("x-border-panel")
				}
				this[p]=p!="center"&&G.split?new Ext.layout.BorderLayout.SplitRegion(this,G.initialConfig,p):new Ext.layout.BorderLayout.Region(this,G.initialConfig,p);
			this[p].render(J,G)
			}
			this.rendered=true
		}
		var x=this.getLayoutTargetSize();
	if(x.width<20||x.height<20){
		if(k){
			this.restoreCollapsed=k
			}
			return
	}else{
		if(this.restoreCollapsed){
			k=this.restoreCollapsed;
			delete this.restoreCollapsed
			}
		}
	var u=x.width,E=x.height,t=u,B=E,q=0,r=0,z=this.north,v=this.south,o=this.west,F=this.east,G=this.center,I,A,d,H;
if(!G&&Ext.layout.BorderLayout.WARN!==false){
	throw"No center region defined in BorderLayout "+g.id
	}
	if(z&&z.isVisible()){
	I=z.getSize();
	A=z.getMargins();
	I.width=u-(A.left+A.right);
	I.x=A.left;
	I.y=A.top;
	q=I.height+I.y+A.bottom;
	B-=q;
	z.applyLayout(I)
	}
	if(v&&v.isVisible()){
	I=v.getSize();
	A=v.getMargins();
	I.width=u-(A.left+A.right);
	I.x=A.left;
	H=(I.height+A.top+A.bottom);
	I.y=E-H+A.top;
	B-=H;
	v.applyLayout(I)
	}
	if(o&&o.isVisible()){
	I=o.getSize();
	A=o.getMargins();
	I.height=B-(A.top+A.bottom);
	I.x=A.left;
	I.y=q+A.top;
	d=(I.width+A.left+A.right);
	r+=d;
	t-=d;
	o.applyLayout(I)
	}
	if(F&&F.isVisible()){
	I=F.getSize();
	A=F.getMargins();
	I.height=B-(A.top+A.bottom);
	d=(I.width+A.left+A.right);
	I.x=u-d+A.left;
	I.y=q+A.top;
	t-=d;
	F.applyLayout(I)
	}
	if(G){
	A=G.getMargins();
	var l={
		x:r+A.left,
		y:q+A.top,
		width:t-(A.left+A.right),
		height:B-(A.top+A.bottom)
		};

	G.applyLayout(l)
	}
	if(k){
	for(C=0,D=k.length;C<D;C++){
		k[C].collapse(false)
		}
	}
	if(Ext.isIE&&Ext.isStrict){
	J.repaint()
	}
	if(C=J.getStyle("overflow")&&C!="hidden"&&!this.adjustmentPass){
	var a=this.getLayoutTargetSize();
	if(a.width!=x.width||a.height!=x.height){
		this.adjustmentPass=true;
		this.onLayout(g,J)
		}
	}
delete this.adjustmentPass
},
destroy:function(){
	var b=["north","south","east","west"],a,c;
	for(a=0;a<b.length;a++){
		c=this[b[a]];
		if(c){
			if(c.destroy){
				c.destroy()
				}else{
				if(c.split){
					c.split.destroy(true)
					}
				}
		}
	}
Ext.layout.BorderLayout.superclass.destroy.call(this)
}
});
Ext.layout.BorderLayout.Region=function(b,a,c){
	Ext.apply(this,a);
	this.layout=b;
	this.position=c;
	this.state={};

	if(typeof this.margins=="string"){
		this.margins=this.layout.parseMargins(this.margins)
		}
		this.margins=Ext.applyIf(this.margins||{},this.defaultMargins);
	if(this.collapsible){
		if(typeof this.cmargins=="string"){
			this.cmargins=this.layout.parseMargins(this.cmargins)
			}
			if(this.collapseMode=="mini"&&!this.cmargins){
			this.cmargins={
				left:0,
				top:0,
				right:0,
				bottom:0
			}
		}else{
		this.cmargins=Ext.applyIf(this.cmargins||{},c=="north"||c=="south"?this.defaultNSCMargins:this.defaultEWCMargins)
		}
	}
};

Ext.layout.BorderLayout.Region.prototype={
	collapsible:false,
	split:false,
	floatable:true,
	minWidth:50,
	minHeight:50,
	defaultMargins:{
		left:0,
		top:0,
		right:0,
		bottom:0
	},
	defaultNSCMargins:{
		left:5,
		top:5,
		right:5,
		bottom:5
	},
	defaultEWCMargins:{
		left:5,
		top:0,
		right:5,
		bottom:0
	},
	floatingZIndex:100,
	isCollapsed:false,
	render:function(b,c){
		this.panel=c;
		c.el.enableDisplayMode();
		this.targetEl=b;
		this.el=c.el;
		var a=c.getState,d=this.position;
		c.getState=function(){
			return Ext.apply(a.call(c)||{},this.state)
			}.createDelegate(this);
		if(d!="center"){
			c.allowQueuedExpand=false;
			c.on({
				beforecollapse:this.beforeCollapse,
				collapse:this.onCollapse,
				beforeexpand:this.beforeExpand,
				expand:this.onExpand,
				hide:this.onHide,
				show:this.onShow,
				scope:this
			});
			if(this.collapsible||this.floatable){
				c.collapseEl="el";
				c.slideAnchor=this.getSlideAnchor()
				}
				if(c.tools&&c.tools.toggle){
				c.tools.toggle.addClass("x-tool-collapse-"+d);
				c.tools.toggle.addClassOnOver("x-tool-collapse-"+d+"-over")
				}
			}
	},
getCollapsedEl:function(){
	if(!this.collapsedEl){
		if(!this.toolTemplate){
			var b=new Ext.Template('<div class="x-tool x-tool-{id}">&#160;</div>');
			b.disableFormats=true;
			b.compile();
			Ext.layout.BorderLayout.Region.prototype.toolTemplate=b
			}
			this.collapsedEl=this.targetEl.createChild({
			cls:"x-layout-collapsed x-layout-collapsed-"+this.position,
			id:this.panel.id+"-xcollapsed"
			});
		this.collapsedEl.enableDisplayMode("block");
		if(this.collapseMode=="mini"){
			this.collapsedEl.addClass("x-layout-cmini-"+this.position);
			this.miniCollapsedEl=this.collapsedEl.createChild({
				cls:"x-layout-mini x-layout-mini-"+this.position,
				html:"&#160;"
			});
			this.miniCollapsedEl.addClassOnOver("x-layout-mini-over");
			this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
			this.collapsedEl.on("click",this.onExpandClick,this,{
				stopEvent:true
			})
			}else{
			if(this.collapsible!==false&&!this.hideCollapseTool){
				var a=this.expandToolEl=this.toolTemplate.append(this.collapsedEl.dom,{
					id:"expand-"+this.position
					},true);
				a.addClassOnOver("x-tool-expand-"+this.position+"-over");
				a.on("click",this.onExpandClick,this,{
					stopEvent:true
				})
				}
				if(this.floatable!==false||this.titleCollapse){
				this.collapsedEl.addClassOnOver("x-layout-collapsed-over");
				this.collapsedEl.on("click",this[this.floatable?"collapseClick":"onExpandClick"],this)
				}
			}
	}
return this.collapsedEl
},
onExpandClick:function(a){
	if(this.isSlid){
		this.panel.expand(false)
		}else{
		this.panel.expand()
		}
	},
onCollapseClick:function(a){
	this.panel.collapse()
	},
beforeCollapse:function(c,a){
	this.lastAnim=a;
	if(this.splitEl){
		this.splitEl.hide()
		}
		this.getCollapsedEl().show();
	var b=this.panel.getEl();
	this.originalZIndex=b.getStyle("z-index");
	b.setStyle("z-index",100);
	this.isCollapsed=true;
	this.layout.layout()
	},
onCollapse:function(a){
	this.panel.el.setStyle("z-index",1);
	if(this.lastAnim===false||this.panel.animCollapse===false){
		this.getCollapsedEl().dom.style.visibility="visible"
		}else{
		this.getCollapsedEl().slideIn(this.panel.slideAnchor,{
			duration:0.2
		})
		}
		this.state.collapsed=true;
	this.panel.saveState()
	},
beforeExpand:function(a){
	if(this.isSlid){
		this.afterSlideIn()
		}
		var b=this.getCollapsedEl();
	this.el.show();
	if(this.position=="east"||this.position=="west"){
		this.panel.setSize(undefined,b.getHeight())
		}else{
		this.panel.setSize(b.getWidth(),undefined)
		}
		b.hide();
	b.dom.style.visibility="hidden";
	this.panel.el.setStyle("z-index",this.floatingZIndex)
	},
onExpand:function(){
	this.isCollapsed=false;
	if(this.splitEl){
		this.splitEl.show()
		}
		this.layout.layout();
	this.panel.el.setStyle("z-index",this.originalZIndex);
	this.state.collapsed=false;
	this.panel.saveState()
	},
collapseClick:function(a){
	if(this.isSlid){
		a.stopPropagation();
		this.slideIn()
		}else{
		a.stopPropagation();
		this.slideOut()
		}
	},
onHide:function(){
	if(this.isCollapsed){
		this.getCollapsedEl().hide()
		}else{
		if(this.splitEl){
			this.splitEl.hide()
			}
		}
},
onShow:function(){
	if(this.isCollapsed){
		this.getCollapsedEl().show()
		}else{
		if(this.splitEl){
			this.splitEl.show()
			}
		}
},
isVisible:function(){
	return !this.panel.hidden
	},
getMargins:function(){
	return this.isCollapsed&&this.cmargins?this.cmargins:this.margins
	},
getSize:function(){
	return this.isCollapsed?this.getCollapsedEl().getSize():this.panel.getSize()
	},
setPanel:function(a){
	this.panel=a
	},
getMinWidth:function(){
	return this.minWidth
	},
getMinHeight:function(){
	return this.minHeight
	},
applyLayoutCollapsed:function(a){
	var b=this.getCollapsedEl();
	b.setLeftTop(a.x,a.y);
	b.setSize(a.width,a.height)
	},
applyLayout:function(a){
	if(this.isCollapsed){
		this.applyLayoutCollapsed(a)
		}else{
		this.panel.setPosition(a.x,a.y);
		this.panel.setSize(a.width,a.height)
		}
	},
beforeSlide:function(){
	this.panel.beforeEffect()
	},
afterSlide:function(){
	this.panel.afterEffect()
	},
initAutoHide:function(){
	if(this.autoHide!==false){
		if(!this.autoHideHd){
			this.autoHideSlideTask=new Ext.util.DelayedTask(this.slideIn,this);
			this.autoHideHd={
				mouseout:function(a){
					if(!a.within(this.el,true)){
						this.autoHideSlideTask.delay(500)
						}
					},
			mouseover:function(a){
				this.autoHideSlideTask.cancel()
				},
			scope:this
		}
	}
	this.el.on(this.autoHideHd);
this.collapsedEl.on(this.autoHideHd)
}
},
clearAutoHide:function(){
	if(this.autoHide!==false){
		this.el.un("mouseout",this.autoHideHd.mouseout);
		this.el.un("mouseover",this.autoHideHd.mouseover);
		this.collapsedEl.un("mouseout",this.autoHideHd.mouseout);
		this.collapsedEl.un("mouseover",this.autoHideHd.mouseover)
		}
	},
clearMonitor:function(){
	Ext.getDoc().un("click",this.slideInIf,this)
	},
slideOut:function(){
	if(this.isSlid||this.el.hasActiveFx()){
		return
	}
	this.isSlid=true;
	var b=this.panel.tools,c,a;
	if(b&&b.toggle){
		b.toggle.hide()
		}
		this.el.show();
	a=this.panel.collapsed;
	this.panel.collapsed=false;
	if(this.position=="east"||this.position=="west"){
		c=this.panel.deferHeight;
		this.panel.deferHeight=false;
		this.panel.setSize(undefined,this.collapsedEl.getHeight());
		this.panel.deferHeight=c
		}else{
		this.panel.setSize(this.collapsedEl.getWidth(),undefined)
		}
		this.panel.collapsed=a;
	this.restoreLT=[this.el.dom.style.left,this.el.dom.style.top];
	this.el.alignTo(this.collapsedEl,this.getCollapseAnchor());
	this.el.setStyle("z-index",this.floatingZIndex+2);
	this.panel.el.replaceClass("x-panel-collapsed","x-panel-floating");
	if(this.animFloat!==false){
		this.beforeSlide();
		this.el.slideIn(this.getSlideAnchor(),{
			callback:function(){
				this.afterSlide();
				this.initAutoHide();
				Ext.getDoc().on("click",this.slideInIf,this)
				},
			scope:this,
			block:true
		})
		}else{
		this.initAutoHide();
		Ext.getDoc().on("click",this.slideInIf,this)
		}
	},
afterSlideIn:function(){
	this.clearAutoHide();
	this.isSlid=false;
	this.clearMonitor();
	this.el.setStyle("z-index","");
	this.panel.el.replaceClass("x-panel-floating","x-panel-collapsed");
	this.el.dom.style.left=this.restoreLT[0];
	this.el.dom.style.top=this.restoreLT[1];
	var a=this.panel.tools;
	if(a&&a.toggle){
		a.toggle.show()
		}
	},
slideIn:function(a){
	if(!this.isSlid||this.el.hasActiveFx()){
		Ext.callback(a);
		return
	}
	this.isSlid=false;
	if(this.animFloat!==false){
		this.beforeSlide();
		this.el.slideOut(this.getSlideAnchor(),{
			callback:function(){
				this.el.hide();
				this.afterSlide();
				this.afterSlideIn();
				Ext.callback(a)
				},
			scope:this,
			block:true
		})
		}else{
		this.el.hide();
		this.afterSlideIn()
		}
	},
slideInIf:function(a){
	if(!a.within(this.el)){
		this.slideIn()
		}
	},
anchors:{
	west:"left",
	east:"right",
	north:"top",
	south:"bottom"
},
sanchors:{
	west:"l",
	east:"r",
	north:"t",
	south:"b"
},
canchors:{
	west:"tl-tr",
	east:"tr-tl",
	north:"tl-bl",
	south:"bl-tl"
},
getAnchor:function(){
	return this.anchors[this.position]
	},
getCollapseAnchor:function(){
	return this.canchors[this.position]
	},
getSlideAnchor:function(){
	return this.sanchors[this.position]
	},
getAlignAdj:function(){
	var a=this.cmargins;
	switch(this.position){
		case"west":
			return[0,0];
			break;
		case"east":
			return[0,0];
			break;
		case"north":
			return[0,0];
			break;
		case"south":
			return[0,0];
			break
			}
		},
getExpandAdj:function(){
	var b=this.collapsedEl,a=this.cmargins;
	switch(this.position){
		case"west":
			return[-(a.right+b.getWidth()+a.left),0];
			break;
		case"east":
			return[a.right+b.getWidth()+a.left,0];
			break;
		case"north":
			return[0,-(a.top+a.bottom+b.getHeight())];
			break;
		case"south":
			return[0,a.top+a.bottom+b.getHeight()];
			break
			}
		},
destroy:function(){
	if(this.autoHideSlideTask&&this.autoHideSlideTask.cancel){
		this.autoHideSlideTask.cancel()
		}
		Ext.destroyMembers(this,"miniCollapsedEl","collapsedEl","expandToolEl")
	}
};

Ext.layout.BorderLayout.SplitRegion=function(b,a,c){
	Ext.layout.BorderLayout.SplitRegion.superclass.constructor.call(this,b,a,c);
	this.applyLayout=this.applyFns[c]
	};

Ext.extend(Ext.layout.BorderLayout.SplitRegion,Ext.layout.BorderLayout.Region,{
	splitTip:"Drag to resize.",
	collapsibleSplitTip:"Drag to resize. Double click to hide.",
	useSplitTips:false,
	splitSettings:{
		north:{
			orientation:Ext.SplitBar.VERTICAL,
			placement:Ext.SplitBar.TOP,
			maxFn:"getVMaxSize",
			minProp:"minHeight",
			maxProp:"maxHeight"
		},
		south:{
			orientation:Ext.SplitBar.VERTICAL,
			placement:Ext.SplitBar.BOTTOM,
			maxFn:"getVMaxSize",
			minProp:"minHeight",
			maxProp:"maxHeight"
		},
		east:{
			orientation:Ext.SplitBar.HORIZONTAL,
			placement:Ext.SplitBar.RIGHT,
			maxFn:"getHMaxSize",
			minProp:"minWidth",
			maxProp:"maxWidth"
		},
		west:{
			orientation:Ext.SplitBar.HORIZONTAL,
			placement:Ext.SplitBar.LEFT,
			maxFn:"getHMaxSize",
			minProp:"minWidth",
			maxProp:"maxWidth"
		}
	},
applyFns:{
	west:function(c){
		if(this.isCollapsed){
			return this.applyLayoutCollapsed(c)
			}
			var d=this.splitEl.dom,b=d.style;
		this.panel.setPosition(c.x,c.y);
		var a=d.offsetWidth;
		b.left=(c.x+c.width-a)+"px";
		b.top=(c.y)+"px";
		b.height=Math.max(0,c.height)+"px";
		this.panel.setSize(c.width-a,c.height)
		},
	east:function(c){
		if(this.isCollapsed){
			return this.applyLayoutCollapsed(c)
			}
			var d=this.splitEl.dom,b=d.style;
		var a=d.offsetWidth;
		this.panel.setPosition(c.x+a,c.y);
		b.left=(c.x)+"px";
		b.top=(c.y)+"px";
		b.height=Math.max(0,c.height)+"px";
		this.panel.setSize(c.width-a,c.height)
		},
	north:function(c){
		if(this.isCollapsed){
			return this.applyLayoutCollapsed(c)
			}
			var d=this.splitEl.dom,b=d.style;
		var a=d.offsetHeight;
		this.panel.setPosition(c.x,c.y);
		b.left=(c.x)+"px";
		b.top=(c.y+c.height-a)+"px";
		b.width=Math.max(0,c.width)+"px";
		this.panel.setSize(c.width,c.height-a)
		},
	south:function(c){
		if(this.isCollapsed){
			return this.applyLayoutCollapsed(c)
			}
			var d=this.splitEl.dom,b=d.style;
		var a=d.offsetHeight;
		this.panel.setPosition(c.x,c.y+a);
		b.left=(c.x)+"px";
		b.top=(c.y)+"px";
		b.width=Math.max(0,c.width)+"px";
		this.panel.setSize(c.width,c.height-a)
		}
	},
render:function(a,c){
	Ext.layout.BorderLayout.SplitRegion.superclass.render.call(this,a,c);
	var d=this.position;
	this.splitEl=a.createChild({
		cls:"x-layout-split x-layout-split-"+d,
		html:"&#160;",
		id:this.panel.id+"-xsplit"
		});
	if(this.collapseMode=="mini"){
		this.miniSplitEl=this.splitEl.createChild({
			cls:"x-layout-mini x-layout-mini-"+d,
			html:"&#160;"
		});
		this.miniSplitEl.addClassOnOver("x-layout-mini-over");
		this.miniSplitEl.on("click",this.onCollapseClick,this,{
			stopEvent:true
		})
		}
		var b=this.splitSettings[d];
	this.split=new Ext.SplitBar(this.splitEl.dom,c.el,b.orientation);
	this.split.tickSize=this.tickSize;
	this.split.placement=b.placement;
	this.split.getMaximumSize=this[b.maxFn].createDelegate(this);
	this.split.minSize=this.minSize||this[b.minProp];
	this.split.on("beforeapply",this.onSplitMove,this);
	this.split.useShim=this.useShim===true;
	this.maxSize=this.maxSize||this[b.maxProp];
	if(c.hidden){
		this.splitEl.hide()
		}
		if(this.useSplitTips){
		this.splitEl.dom.title=this.collapsible?this.collapsibleSplitTip:this.splitTip
		}
		if(this.collapsible){
		this.splitEl.on("dblclick",this.onCollapseClick,this)
		}
	},
getSize:function(){
	if(this.isCollapsed){
		return this.collapsedEl.getSize()
		}
		var a=this.panel.getSize();
	if(this.position=="north"||this.position=="south"){
		a.height+=this.splitEl.dom.offsetHeight
		}else{
		a.width+=this.splitEl.dom.offsetWidth
		}
		return a
	},
getHMaxSize:function(){
	var b=this.maxSize||10000;
	var a=this.layout.center;
	return Math.min(b,(this.el.getWidth()+a.el.getWidth())-a.getMinWidth())
	},
getVMaxSize:function(){
	var b=this.maxSize||10000;
	var a=this.layout.center;
	return Math.min(b,(this.el.getHeight()+a.el.getHeight())-a.getMinHeight())
	},
onSplitMove:function(b,a){
	var c=this.panel.getSize();
	this.lastSplitSize=a;
	if(this.position=="north"||this.position=="south"){
		this.panel.setSize(c.width,a);
		this.state.height=a
		}else{
		this.panel.setSize(a,c.height);
		this.state.width=a
		}
		this.layout.layout();
	this.panel.saveState();
	return false
	},
getSplitBar:function(){
	return this.split
	},
destroy:function(){
	Ext.destroy(this.miniSplitEl,this.split,this.splitEl);
	Ext.layout.BorderLayout.SplitRegion.superclass.destroy.call(this)
	}
});
Ext.Container.LAYOUTS.border=Ext.layout.BorderLayout;
Ext.layout.FormLayout=Ext.extend(Ext.layout.AnchorLayout,{
	labelSeparator:":",
	trackLabels:true,
	type:"form",
	onRemove:function(d){
		Ext.layout.FormLayout.superclass.onRemove.call(this,d);
		if(this.trackLabels){
			d.un("show",this.onFieldShow,this);
			d.un("hide",this.onFieldHide,this)
			}
			var b=d.getPositionEl(),a=d.getItemCt&&d.getItemCt();
		if(d.rendered&&a){
			if(b&&b.dom){
				b.insertAfter(a)
				}
				Ext.destroy(a);
			Ext.destroyMembers(d,"label","itemCt");
			if(d.customItemCt){
				Ext.destroyMembers(d,"getItemCt","customItemCt")
				}
			}
	},
setContainer:function(a){
	Ext.layout.FormLayout.superclass.setContainer.call(this,a);
	if(a.labelAlign){
		a.addClass("x-form-label-"+a.labelAlign)
		}
		if(a.hideLabels){
		Ext.apply(this,{
			labelStyle:"display:none",
			elementStyle:"padding-left:0;",
			labelAdjust:0
		})
		}else{
		this.labelSeparator=Ext.isDefined(a.labelSeparator)?a.labelSeparator:this.labelSeparator;
		a.labelWidth=a.labelWidth||100;
		if(Ext.isNumber(a.labelWidth)){
			var b=Ext.isNumber(a.labelPad)?a.labelPad:5;
			Ext.apply(this,{
				labelAdjust:a.labelWidth+b,
				labelStyle:"width:"+a.labelWidth+"px;",
				elementStyle:"padding-left:"+(a.labelWidth+b)+"px"
				})
			}
			if(a.labelAlign=="top"){
			Ext.apply(this,{
				labelStyle:"width:auto;",
				labelAdjust:0,
				elementStyle:"padding-left:0;"
			})
			}
		}
},
isHide:function(a){
	return a.hideLabel||this.container.hideLabels
	},
onFieldShow:function(a){
	a.getItemCt().removeClass("x-hide-"+a.hideMode);
	if(a.isComposite){
		a.doLayout()
		}
	},
onFieldHide:function(a){
	a.getItemCt().addClass("x-hide-"+a.hideMode)
	},
getLabelStyle:function(e){
	var b="",c=[this.labelStyle,e];
	for(var d=0,a=c.length;d<a;++d){
		if(c[d]){
			b+=c[d];
			if(b.substr(-1,1)!=";"){
				b+=";"
				}
			}
	}
	return b
},
renderItem:function(e,a,d){
	if(e&&(e.isFormField||e.fieldLabel)&&e.inputType!="hidden"){
		var b=this.getTemplateArgs(e);
		if(Ext.isNumber(a)){
			a=d.dom.childNodes[a]||null
			}
			if(a){
			e.itemCt=this.fieldTpl.insertBefore(a,b,true)
			}else{
			e.itemCt=this.fieldTpl.append(d,b,true)
			}
			if(!e.getItemCt){
			Ext.apply(e,{
				getItemCt:function(){
					return e.itemCt
					},
				customItemCt:true
			})
			}
			e.label=e.getItemCt().child("label.x-form-item-label");
		if(!e.rendered){
			e.render("x-form-el-"+e.id)
			}else{
			if(!this.isValidParent(e,d)){
				Ext.fly("x-form-el-"+e.id).appendChild(e.getPositionEl())
				}
			}
		if(this.trackLabels){
		if(e.hidden){
			this.onFieldHide(e)
			}
			e.on({
			scope:this,
			show:this.onFieldShow,
			hide:this.onFieldHide
			})
		}
		this.configureItem(e)
	}else{
	Ext.layout.FormLayout.superclass.renderItem.apply(this,arguments)
	}
},
getTemplateArgs:function(b){
	var a=!b.fieldLabel||b.hideLabel;
	return{
		id:b.id,
		label:b.fieldLabel,
		itemCls:(b.itemCls||this.container.itemCls||"")+(b.hideLabel?" x-hide-label":""),
		clearCls:b.clearCls||"x-form-clear-left",
		labelStyle:this.getLabelStyle(b.labelStyle),
		elementStyle:this.elementStyle||"",
		labelSeparator:a?"":(Ext.isDefined(b.labelSeparator)?b.labelSeparator:this.labelSeparator)
		}
	},
adjustWidthAnchor:function(a,d){
	if(d.label&&!this.isHide(d)&&(this.container.labelAlign!="top")){
		var b=Ext.isIE6||(Ext.isIE&&!Ext.isStrict);
		return a-this.labelAdjust+(b?-3:0)
		}
		return a
	},
adjustHeightAnchor:function(a,b){
	if(b.label&&!this.isHide(b)&&(this.container.labelAlign=="top")){
		return a-b.label.getHeight()
		}
		return a
	},
isValidParent:function(b,a){
	return a&&this.container.getEl().contains(b.getPositionEl())
	}
});
Ext.Container.LAYOUTS.form=Ext.layout.FormLayout;
Ext.layout.AccordionLayout=Ext.extend(Ext.layout.FitLayout,{
	fill:true,
	autoWidth:true,
	titleCollapse:true,
	hideCollapseTool:false,
	collapseFirst:false,
	animate:false,
	sequence:false,
	activeOnTop:false,
	type:"accordion",
	renderItem:function(a){
		if(this.animate===false){
			a.animCollapse=false
			}
			a.collapsible=true;
		if(this.autoWidth){
			a.autoWidth=true
			}
			if(this.titleCollapse){
			a.titleCollapse=true
			}
			if(this.hideCollapseTool){
			a.hideCollapseTool=true
			}
			if(this.collapseFirst!==undefined){
			a.collapseFirst=this.collapseFirst
			}
			if(!this.activeItem&&!a.collapsed){
			this.setActiveItem(a,true)
			}else{
			if(this.activeItem&&this.activeItem!=a){
				a.collapsed=true
				}
			}
		Ext.layout.AccordionLayout.superclass.renderItem.apply(this,arguments);
	a.header.addClass("x-accordion-hd");
	a.on("beforeexpand",this.beforeExpand,this)
	},
onRemove:function(a){
	Ext.layout.AccordionLayout.superclass.onRemove.call(this,a);
	if(a.rendered){
		a.header.removeClass("x-accordion-hd")
		}
		a.un("beforeexpand",this.beforeExpand,this)
	},
beforeExpand:function(c,b){
	var a=this.activeItem;
	if(a){
		if(this.sequence){
			delete this.activeItem;
			if(!a.collapsed){
				a.collapse({
					callback:function(){
						c.expand(b||true)
						},
					scope:this
				});
				return false
				}
			}else{
		a.collapse(this.animate)
		}
	}
this.setActive(c);
	if(this.activeOnTop){
	c.el.dom.parentNode.insertBefore(c.el.dom,c.el.dom.parentNode.firstChild)
	}
	this.layout()
	},
setItemSize:function(g,e){
	if(this.fill&&g){
		var d=0,c,b=this.getRenderedItems(this.container),a=b.length,h;
		for(c=0;c<a;c++){
			if((h=b[c])!=g&&!h.hidden){
				d+=h.header.getHeight()
				}
			}
		e.height-=d;
	g.setSize(e)
	}
},
setActiveItem:function(a){
	this.setActive(a,true)
	},
setActive:function(c,b){
	var a=this.activeItem;
	c=this.container.getComponent(c);
	if(a!=c){
		if(c.rendered&&c.collapsed&&b){
			c.expand()
			}else{
			if(a){
				a.fireEvent("deactivate",a)
				}
				this.activeItem=c;
			c.fireEvent("activate",c)
			}
		}
}
});
Ext.Container.LAYOUTS.accordion=Ext.layout.AccordionLayout;
Ext.layout.Accordion=Ext.layout.AccordionLayout;
Ext.layout.TableLayout=Ext.extend(Ext.layout.ContainerLayout,{
	monitorResize:false,
	type:"table",
	targetCls:"x-table-layout-ct",
	tableAttrs:null,
	setContainer:function(a){
		Ext.layout.TableLayout.superclass.setContainer.call(this,a);
		this.currentRow=0;
		this.currentColumn=0;
		this.cells=[]
		},
	onLayout:function(d,g){
		var e=d.items.items,a=e.length,h,b;
		if(!this.table){
			g.addClass("x-table-layout-ct");
			this.table=g.createChild(Ext.apply({
				tag:"table",
				cls:"x-table-layout",
				cellspacing:0,
				cn:{
					tag:"tbody"
				}
			},this.tableAttrs),null,true)
		}
		this.renderAll(d,g)
	},
getRow:function(a){
	var b=this.table.tBodies[0].childNodes[a];
	if(!b){
		b=document.createElement("tr");
		this.table.tBodies[0].appendChild(b)
		}
		return b
	},
getNextCell:function(k){
	var a=this.getNextNonSpan(this.currentColumn,this.currentRow);
	var g=this.currentColumn=a[0],e=this.currentRow=a[1];
	for(var i=e;i<e+(k.rowspan||1);i++){
		if(!this.cells[i]){
			this.cells[i]=[]
			}
			for(var d=g;d<g+(k.colspan||1);d++){
			this.cells[i][d]=true
			}
		}
		var h=document.createElement("td");
	if(k.cellId){
	h.id=k.cellId
	}
	var b="x-table-layout-cell";
if(k.cellCls){
	b+=" "+k.cellCls
	}
	h.className=b;
if(k.colspan){
	h.colSpan=k.colspan
	}
	if(k.rowspan){
	h.rowSpan=k.rowspan
	}
	this.getRow(e).appendChild(h);
	return h
	},
getNextNonSpan:function(a,c){
	var b=this.columns;
	while((b&&a>=b)||(this.cells[c]&&this.cells[c][a])){
		if(b&&a>=b){
			c++;
			a=0
			}else{
			a++
		}
	}
	return[a,c]
},
renderItem:function(e,a,d){
	if(!this.table){
		this.table=d.createChild(Ext.apply({
			tag:"table",
			cls:"x-table-layout",
			cellspacing:0,
			cn:{
				tag:"tbody"
			}
		},this.tableAttrs),null,true)
	}
	if(e&&!e.rendered){
	e.render(this.getNextCell(e));
	this.configureItem(e)
	}else{
	if(e&&!this.isValidParent(e,d)){
		var b=this.getNextCell(e);
		b.insertBefore(e.getPositionEl().dom,null);
		e.container=Ext.get(b);
		this.configureItem(e)
		}
	}
},
isValidParent:function(b,a){
	return b.getPositionEl().up("table",5).dom.parentNode===(a.dom||a)
	},
destroy:function(){
	delete this.table;
	Ext.layout.TableLayout.superclass.destroy.call(this)
	}
});
Ext.Container.LAYOUTS.table=Ext.layout.TableLayout;
Ext.layout.AbsoluteLayout=Ext.extend(Ext.layout.AnchorLayout,{
	extraCls:"x-abs-layout-item",
	type:"absolute",
	onLayout:function(a,b){
		b.position();
		this.paddingLeft=b.getPadding("l");
		this.paddingTop=b.getPadding("t");
		Ext.layout.AbsoluteLayout.superclass.onLayout.call(this,a,b)
		},
	adjustWidthAnchor:function(b,a){
		return b?b-a.getPosition(true)[0]+this.paddingLeft:b
		},
	adjustHeightAnchor:function(b,a){
		return b?b-a.getPosition(true)[1]+this.paddingTop:b
		}
	});
Ext.Container.LAYOUTS.absolute=Ext.layout.AbsoluteLayout;
Ext.layout.BoxLayout=Ext.extend(Ext.layout.ContainerLayout,{
	defaultMargins:{
		left:0,
		top:0,
		right:0,
		bottom:0
	},
	padding:"0",
	pack:"start",
	monitorResize:true,
	type:"box",
	scrollOffset:0,
	extraCls:"x-box-item",
	targetCls:"x-box-layout-ct",
	innerCls:"x-box-inner",
	constructor:function(a){
		Ext.layout.BoxLayout.superclass.constructor.call(this,a);
		if(Ext.isString(this.defaultMargins)){
			this.defaultMargins=this.parseMargins(this.defaultMargins)
			}
			var d=this.overflowHandler;
		if(typeof d=="string"){
			d={
				type:d
			}
		}
		var c="none";
	if(d&&d.type!=undefined){
		c=d.type
		}
		var b=Ext.layout.boxOverflow[c];
	if(b[this.type]){
		b=b[this.type]
		}
		this.overflowHandler=new b(this,d)
	},
onLayout:function(b,h){
	Ext.layout.BoxLayout.superclass.onLayout.call(this,b,h);
	var d=this.getLayoutTargetSize(),i=this.getVisibleItems(b),c=this.calculateChildBoxes(i,d),g=c.boxes,k=c.meta;
	if(d.width>0){
		var l=this.overflowHandler,a=k.tooNarrow?"handleOverflow":"clearOverflow";
		var e=l[a](c,d);
		if(e){
			if(e.targetSize){
				d=e.targetSize
				}
				if(e.recalculate){
				i=this.getVisibleItems(b);
				c=this.calculateChildBoxes(i,d);
				g=c.boxes
				}
			}
	}
this.layoutTargetLastSize=d;
this.childBoxCache=c;
this.updateInnerCtSize(d,c);
	this.updateChildBoxes(g);
	this.handleTargetOverflow(d,b,h)
	},
updateChildBoxes:function(c){
	for(var b=0,e=c.length;b<e;b++){
		var d=c[b],a=d.component;
		if(d.dirtySize){
			a.setSize(d.width,d.height)
			}
			if(isNaN(d.left)||isNaN(d.top)){
			continue
		}
		a.setPosition(d.left,d.top)
		}
	},
updateInnerCtSize:function(c,h){
	var i=this.align,g=this.padding,e=c.width,a=c.height;
	if(this.type=="hbox"){
		var b=e,d=h.meta.maxHeight+g.top+g.bottom;
		if(i=="stretch"){
			d=a
			}else{
			if(i=="middle"){
				d=Math.max(a,d)
				}
			}
	}else{
	var d=a,b=h.meta.maxWidth+g.left+g.right;
	if(i=="stretch"){
		b=e
		}else{
		if(i=="center"){
			b=Math.max(e,b)
			}
		}
}
this.innerCt.setSize(b||undefined,d||undefined)
},
handleTargetOverflow:function(d,a,c){
	var e=c.getStyle("overflow");
	if(e&&e!="hidden"&&!this.adjustmentPass){
		var b=this.getLayoutTargetSize();
		if(b.width!=d.width||b.height!=d.height){
			this.adjustmentPass=true;
			this.onLayout(a,c)
			}
		}
	delete this.adjustmentPass
},
isValidParent:function(b,a){
	return this.innerCt&&b.getPositionEl().dom.parentNode==this.innerCt.dom
	},
getVisibleItems:function(g){
	var g=g||this.container,e=g.getLayoutTarget(),h=g.items.items,a=h.length,d,k,b=[];
	for(d=0;d<a;d++){
		if((k=h[d]).rendered&&this.isValidParent(k,e)&&k.hidden!==true&&k.collapsed!==true&&k.shouldLayout!==false){
			b.push(k)
			}
		}
	return b
},
renderAll:function(a,b){
	if(!this.innerCt){
		this.innerCt=b.createChild({
			cls:this.innerCls
			});
		this.padding=this.parseMargins(this.padding)
		}
		Ext.layout.BoxLayout.superclass.renderAll.call(this,a,this.innerCt)
	},
getLayoutTargetSize:function(){
	var b=this.container.getLayoutTarget(),a;
	if(b){
		a=b.getViewSize();
		if(Ext.isIE&&Ext.isStrict&&a.width==0){
			a=b.getStyleSize()
			}
			a.width-=b.getPadding("lr");
		a.height-=b.getPadding("tb")
		}
		return a
	},
renderItem:function(a){
	if(Ext.isString(a.margins)){
		a.margins=this.parseMargins(a.margins)
		}else{
		if(!a.margins){
			a.margins=this.defaultMargins
			}
		}
	Ext.layout.BoxLayout.superclass.renderItem.apply(this,arguments)
},
destroy:function(){
	Ext.destroy(this.overflowHandler);
	Ext.layout.BoxLayout.superclass.destroy.apply(this,arguments)
	}
});
Ext.ns("Ext.layout.boxOverflow");
Ext.layout.boxOverflow.None=Ext.extend(Object,{
	constructor:function(b,a){
		this.layout=b;
		Ext.apply(this,a||{})
		},
	handleOverflow:Ext.emptyFn,
	clearOverflow:Ext.emptyFn
	});
Ext.layout.boxOverflow.none=Ext.layout.boxOverflow.None;
Ext.layout.boxOverflow.Menu=Ext.extend(Ext.layout.boxOverflow.None,{
	afterCls:"x-strip-right",
	noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>',
	constructor:function(a){
		Ext.layout.boxOverflow.Menu.superclass.constructor.apply(this,arguments);
		this.menuItems=[]
		},
	createInnerElements:function(){
		if(!this.afterCt){
			this.afterCt=this.layout.innerCt.insertSibling({
				cls:this.afterCls
				},"before")
			}
		},
clearOverflow:function(a,g){
	var e=g.width+(this.afterCt?this.afterCt.getWidth():0),b=this.menuItems;
	this.hideTrigger();
	for(var c=0,d=b.length;c<d;c++){
		b.pop().component.show()
		}
		return{
		targetSize:{
			height:g.height,
			width:e
		}
	}
},
showTrigger:function(){
	this.createMenu();
	this.menuTrigger.show()
	},
hideTrigger:function(){
	if(this.menuTrigger!=undefined){
		this.menuTrigger.hide()
		}
	},
beforeMenuShow:function(h){
	var b=this.menuItems,a=b.length,g,e;
	var c=function(k,i){
		return k.isXType("buttongroup")&&!(i instanceof Ext.Toolbar.Separator)
		};

	this.clearMenu();
	h.removeAll();
	for(var d=0;d<a;d++){
		g=b[d].component;
		if(e&&(c(g,e)||c(e,g))){
			h.add("-")
			}
			this.addComponentToMenu(h,g);
		e=g
		}
		if(h.items.length<1){
		h.add(this.noItemsMenuText)
		}
	},
createMenuConfig:function(c,a){
	var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;
	Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);
	Ext.apply(b,{
		text:c.overflowText||c.text,
		hideOnClick:a
	});
	if(d||c.enableToggle){
		Ext.apply(b,{
			group:d,
			checked:c.pressed,
			listeners:{
				checkchange:function(g,e){
					c.toggle(e)
					}
				}
		})
}
delete b.ownerCt;
delete b.xtype;
delete b.id;
return b
},
addComponentToMenu:function(b,a){
	if(a instanceof Ext.Toolbar.Separator){
		b.add("-")
		}else{
		if(Ext.isFunction(a.isXType)){
			if(a.isXType("splitbutton")){
				b.add(this.createMenuConfig(a,true))
				}else{
				if(a.isXType("button")){
					b.add(this.createMenuConfig(a,!a.menu))
					}else{
					if(a.isXType("buttongroup")){
						a.items.each(function(c){
							this.addComponentToMenu(b,c)
							},this)
						}
					}
			}
	}
}
},
clearMenu:function(){
	var a=this.moreMenu;
	if(a&&a.items){
		a.items.each(function(b){
			delete b.menu
			})
		}
	},
createMenu:function(){
	if(!this.menuTrigger){
		this.createInnerElements();
		this.menu=new Ext.menu.Menu({
			ownerCt:this.layout.container,
			listeners:{
				scope:this,
				beforeshow:this.beforeMenuShow
				}
			});
	this.menuTrigger=new Ext.Button({
		iconCls:"x-toolbar-more-icon",
		cls:"x-toolbar-more",
		menu:this.menu,
		renderTo:this.afterCt
		})
	}
},
destroy:function(){
	Ext.destroy(this.menu,this.menuTrigger)
	}
});
Ext.layout.boxOverflow.menu=Ext.layout.boxOverflow.Menu;
Ext.layout.boxOverflow.HorizontalMenu=Ext.extend(Ext.layout.boxOverflow.Menu,{
	constructor:function(){
		Ext.layout.boxOverflow.HorizontalMenu.superclass.constructor.apply(this,arguments);
		var c=this,b=c.layout,a=b.calculateChildBoxes;
		b.calculateChildBoxes=function(d,i){
			var m=a.apply(b,arguments),l=m.meta,e=c.menuItems;
			var k=0;
			for(var g=0,h=e.length;g<h;g++){
				k+=e[g].width
				}
				l.minimumWidth+=k;
			l.tooNarrow=l.minimumWidth>i.width;
			return m
			}
		},
handleOverflow:function(d,h){
	this.showTrigger();
	var l=h.width-this.afterCt.getWidth(),m=d.boxes,e=0,s=false;
	for(var p=0,c=m.length;p<c;p++){
		e+=m[p].width
		}
		var a=l-e,g=0;
	for(var p=0,c=this.menuItems.length;p<c;p++){
		var o=this.menuItems[p],n=o.component,b=o.width;
		if(b<a){
			n.show();
			a-=b;
			g++;
			s=true
			}else{
			break
		}
	}
	if(s){
	this.menuItems=this.menuItems.slice(g)
	}else{
	for(var k=m.length-1;k>=0;k--){
		var r=m[k].component,q=m[k].left+m[k].width;
		if(q>=l){
			this.menuItems.unshift({
				component:r,
				width:m[k].width
				});
			r.hide()
			}else{
			break
		}
	}
	}
if(this.menuItems.length==0){
	this.hideTrigger()
	}
	return{
	targetSize:{
		height:h.height,
		width:l
	},
	recalculate:s
}
}
});
Ext.layout.boxOverflow.menu.hbox=Ext.layout.boxOverflow.HorizontalMenu;
Ext.layout.boxOverflow.Scroller=Ext.extend(Ext.layout.boxOverflow.None,{
	animateScroll:true,
	scrollIncrement:100,
	wheelIncrement:3,
	scrollRepeatInterval:400,
	scrollDuration:0.4,
	beforeCls:"x-strip-left",
	afterCls:"x-strip-right",
	scrollerCls:"x-strip-scroller",
	beforeScrollerCls:"x-strip-scroller-left",
	afterScrollerCls:"x-strip-scroller-right",
	createWheelListener:function(){
		this.layout.innerCt.on({
			scope:this,
			mousewheel:function(a){
				a.stopEvent();
				this.scrollBy(a.getWheelDelta()*this.wheelIncrement*-1,false)
				}
			})
	},
handleOverflow:function(a,b){
	this.createInnerElements();
	this.showScrollers()
	},
clearOverflow:function(){
	this.hideScrollers()
	},
showScrollers:function(){
	this.createScrollers();
	this.beforeScroller.show();
	this.afterScroller.show();
	this.updateScrollButtons()
	},
hideScrollers:function(){
	if(this.beforeScroller!=undefined){
		this.beforeScroller.hide();
		this.afterScroller.hide()
		}
	},
createScrollers:function(){
	if(!this.beforeScroller&&!this.afterScroller){
		var a=this.beforeCt.createChild({
			cls:String.format("{0} {1} ",this.scrollerCls,this.beforeScrollerCls)
			});
		var b=this.afterCt.createChild({
			cls:String.format("{0} {1}",this.scrollerCls,this.afterScrollerCls)
			});
		a.addClassOnOver(this.beforeScrollerCls+"-hover");
		b.addClassOnOver(this.afterScrollerCls+"-hover");
		a.setVisibilityMode(Ext.Element.DISPLAY);
		b.setVisibilityMode(Ext.Element.DISPLAY);
		this.beforeRepeater=new Ext.util.ClickRepeater(a,{
			interval:this.scrollRepeatInterval,
			handler:this.scrollLeft,
			scope:this
		});
		this.afterRepeater=new Ext.util.ClickRepeater(b,{
			interval:this.scrollRepeatInterval,
			handler:this.scrollRight,
			scope:this
		});
		this.beforeScroller=a;
		this.afterScroller=b
		}
	},
destroy:function(){
	Ext.destroy(this.beforeScroller,this.afterScroller,this.beforeRepeater,this.afterRepeater,this.beforeCt,this.afterCt)
	},
scrollBy:function(b,a){
	this.scrollTo(this.getScrollPosition()+b,a)
	},
getItem:function(a){
	if(Ext.isString(a)){
		a=Ext.getCmp(a)
		}else{
		if(Ext.isNumber(a)){
			a=this.items[a]
			}
		}
	return a
},
getScrollAnim:function(){
	return{
		duration:this.scrollDuration,
		callback:this.updateScrollButtons,
		scope:this
	}
},
updateScrollButtons:function(){
	if(this.beforeScroller==undefined||this.afterScroller==undefined){
		return
	}
	var d=this.atExtremeBefore()?"addClass":"removeClass",c=this.atExtremeAfter()?"addClass":"removeClass",a=this.beforeScrollerCls+"-disabled",b=this.afterScrollerCls+"-disabled";
	this.beforeScroller[d](a);
	this.afterScroller[c](b);
	this.scrolling=false
	},
atExtremeBefore:function(){
	return this.getScrollPosition()===0
	},
scrollLeft:function(a){
	this.scrollBy(-this.scrollIncrement,a)
	},
scrollRight:function(a){
	this.scrollBy(this.scrollIncrement,a)
	},
scrollToItem:function(d,b){
	d=this.getItem(d);
	if(d!=undefined){
		var a=this.getItemVisibility(d);
		if(!a.fullyVisible){
			var c=d.getBox(true,true),e=c.x;
			if(a.hiddenRight){
				e-=(this.layout.innerCt.getWidth()-c.width)
				}
				this.scrollTo(e,b)
			}
		}
},
getItemVisibility:function(e){
	var d=this.getItem(e).getBox(true,true),a=d.x,c=d.x+d.width,g=this.getScrollPosition(),b=this.layout.innerCt.getWidth()+g;
	return{
		hiddenLeft:a<g,
		hiddenRight:c>b,
		fullyVisible:a>g&&c<b
		}
	}
});
Ext.layout.boxOverflow.scroller=Ext.layout.boxOverflow.Scroller;
Ext.layout.boxOverflow.VerticalScroller=Ext.extend(Ext.layout.boxOverflow.Scroller,{
	scrollIncrement:75,
	wheelIncrement:2,
	handleOverflow:function(a,b){
		Ext.layout.boxOverflow.VerticalScroller.superclass.handleOverflow.apply(this,arguments);
		return{
			targetSize:{
				height:b.height-(this.beforeCt.getHeight()+this.afterCt.getHeight()),
				width:b.width
				}
			}
	},
createInnerElements:function(){
	var a=this.layout.innerCt;
	if(!this.beforeCt){
		this.beforeCt=a.insertSibling({
			cls:this.beforeCls
			},"before");
		this.afterCt=a.insertSibling({
			cls:this.afterCls
			},"after");
		this.createWheelListener()
		}
	},
scrollTo:function(a,b){
	var d=this.getScrollPosition(),c=a.constrain(0,this.getMaxScrollBottom());
	if(c!=d&&!this.scrolling){
		if(b==undefined){
			b=this.animateScroll
			}
			this.layout.innerCt.scrollTo("top",c,b?this.getScrollAnim():false);
		if(b){
			this.scrolling=true
			}else{
			this.scrolling=false;
			this.updateScrollButtons()
			}
		}
},
getScrollPosition:function(){
	return parseInt(this.layout.innerCt.dom.scrollTop,10)||0
	},
getMaxScrollBottom:function(){
	return this.layout.innerCt.dom.scrollHeight-this.layout.innerCt.getHeight()
	},
atExtremeAfter:function(){
	return this.getScrollPosition()>=this.getMaxScrollBottom()
	}
});
Ext.layout.boxOverflow.scroller.vbox=Ext.layout.boxOverflow.VerticalScroller;
Ext.layout.boxOverflow.HorizontalScroller=Ext.extend(Ext.layout.boxOverflow.Scroller,{
	handleOverflow:function(a,b){
		Ext.layout.boxOverflow.HorizontalScroller.superclass.handleOverflow.apply(this,arguments);
		return{
			targetSize:{
				height:b.height,
				width:b.width-(this.beforeCt.getWidth()+this.afterCt.getWidth())
				}
			}
	},
createInnerElements:function(){
	var a=this.layout.innerCt;
	if(!this.beforeCt){
		this.afterCt=a.insertSibling({
			cls:this.afterCls
			},"before");
		this.beforeCt=a.insertSibling({
			cls:this.beforeCls
			},"before");
		this.createWheelListener()
		}
	},
scrollTo:function(a,b){
	var d=this.getScrollPosition(),c=a.constrain(0,this.getMaxScrollRight());
	if(c!=d&&!this.scrolling){
		if(b==undefined){
			b=this.animateScroll
			}
			this.layout.innerCt.scrollTo("left",c,b?this.getScrollAnim():false);
		if(b){
			this.scrolling=true
			}else{
			this.scrolling=false;
			this.updateScrollButtons()
			}
		}
},
getScrollPosition:function(){
	return parseInt(this.layout.innerCt.dom.scrollLeft,10)||0
	},
getMaxScrollRight:function(){
	return this.layout.innerCt.dom.scrollWidth-this.layout.innerCt.getWidth()
	},
atExtremeAfter:function(){
	return this.getScrollPosition()>=this.getMaxScrollRight()
	}
});
Ext.layout.boxOverflow.scroller.hbox=Ext.layout.boxOverflow.HorizontalScroller;
Ext.layout.HBoxLayout=Ext.extend(Ext.layout.BoxLayout,{
	align:"top",
	type:"hbox",
	calculateChildBoxes:function(s,b){
		var G=s.length,S=this.padding,E=S.top,V=S.left,z=E+S.bottom,P=V+S.right,a=b.width-this.scrollOffset,e=b.height,p=Math.max(0,e-z),Q=this.pack=="start",X=this.pack=="center",B=this.pack=="end",M=0,R=0,U=0,m=0,Y=0,I=[],l,K,N,W,x,k,T,J,c,y,r,O;
		for(T=0;T<G;T++){
			l=s[T];
			N=l.height;
			K=l.width;
			k=!l.hasLayout&&typeof l.doLayout=="function";
			if(typeof K!="number"){
				if(l.flex&&!K){
					U+=l.flex
					}else{
					if(!K&&k){
						l.doLayout()
						}
						W=l.getSize();
					K=W.width;
					N=W.height
					}
				}
			x=l.margins;
		y=x.left+x.right;
		M+=y+(K||0);
			m+=y+(l.flex?l.minWidth||0:K);
			Y+=y+(l.minWidth||K||0);
			if(typeof N!="number"){
			if(k){
				l.doLayout()
				}
				N=l.getHeight()
			}
			R=Math.max(R,N+x.top+x.bottom);
			I.push({
			component:l,
			height:N||undefined,
			width:K||undefined
			})
		}
		var L=m-a,q=Y>a;
	var o=Math.max(0,a-M-P);
	if(q){
		for(T=0;T<G;T++){
			I[T].width=s[T].minWidth||s[T].width||I[T].width
			}
		}else{
	if(L>0){
		var D=[];
		for(var F=0,w=G;F<w;F++){
			var C=s[F],u=C.minWidth||0;
			if(C.flex){
				I[F].width=u
				}else{
				D.push({
					minWidth:u,
					available:I[F].width-u,
					index:F
				})
				}
			}
		D.sort(function(Z,i){
		return Z.available>i.available?1:-1
		});
	for(var T=0,w=D.length;T<w;T++){
		var H=D[T].index;
		if(H==undefined){
			continue
		}
		var C=s[H],n=I[H],v=n.width,u=C.minWidth,d=Math.max(u,v-Math.ceil(L/(w-T))),g=v-d;
		I[H].width=d;
		L-=g
		}
	}else{
	var h=o,t=U;
	for(T=0;T<G;T++){
		l=s[T];
		J=I[T];
		x=l.margins;
		r=x.top+x.bottom;
		if(Q&&l.flex&&!l.width){
			c=Math.ceil((l.flex/t)*h);
			h-=c;
			t-=l.flex;
			J.width=c;
			J.dirtySize=true
			}
		}
	}
}
if(X){
	V+=o/2
	}else{
	if(B){
		V+=o
		}
	}
for(T=0;T<G;T++){
	l=s[T];
	J=I[T];
	x=l.margins;
	V+=x.left;
	r=x.top+x.bottom;
	J.left=V;
	J.top=E+x.top;
	switch(this.align){
		case"stretch":
			O=p-r;
			J.height=O.constrain(l.minHeight||0,l.maxHeight||1000000);
			J.dirtySize=true;
			break;
		case"stretchmax":
			O=R-r;
			J.height=O.constrain(l.minHeight||0,l.maxHeight||1000000);
			J.dirtySize=true;
			break;
		case"middle":
			var A=p-J.height-r;
			if(A>0){
			J.top=E+r+(A/2)
			}
		}
		V+=J.width+x.right
}
return{
	boxes:I,
	meta:{
		maxHeight:R,
		nonFlexWidth:M,
		desiredWidth:m,
		minimumWidth:Y,
		shortfall:m-a,
		tooNarrow:q
	}
}
}
});
Ext.Container.LAYOUTS.hbox=Ext.layout.HBoxLayout;
Ext.layout.VBoxLayout=Ext.extend(Ext.layout.BoxLayout,{
	align:"left",
	type:"vbox",
	calculateChildBoxes:function(q,b){
		var G=q.length,T=this.padding,E=T.top,W=T.left,z=E+T.bottom,Q=W+T.right,a=b.width-this.scrollOffset,d=b.height,M=Math.max(0,a-Q),R=this.pack=="start",Y=this.pack=="center",B=this.pack=="end",m=0,w=0,V=0,N=0,o=0,I=[],k,K,P,X,v,h,U,J,c,y,p,e;
		for(U=0;U<G;U++){
			k=q[U];
			P=k.height;
			K=k.width;
			h=!k.hasLayout&&typeof k.doLayout=="function";
			if(typeof P!="number"){
				if(k.flex&&!P){
					V+=k.flex
					}else{
					if(!P&&h){
						k.doLayout()
						}
						X=k.getSize();
					K=X.width;
					P=X.height
					}
				}
			v=k.margins;
		p=v.top+v.bottom;
		m+=p+(P||0);
			N+=p+(k.flex?k.minHeight||0:P);
			o+=p+(k.minHeight||P||0);
			if(typeof K!="number"){
			if(h){
				k.doLayout()
				}
				K=k.getWidth()
			}
			w=Math.max(w,K+v.left+v.right);
			I.push({
			component:k,
			height:P||undefined,
			width:K||undefined
			})
		}
		var O=N-d,n=o>d;
	var s=Math.max(0,(d-m-z));
	if(n){
		for(U=0,t=G;U<t;U++){
			I[U].height=q[U].minHeight||q[U].height||I[U].height
			}
		}else{
	if(O>0){
		var L=[];
		for(var F=0,t=G;F<t;F++){
			var C=q[F],u=C.minHeight||0;
			if(C.flex){
				I[F].height=u
				}else{
				L.push({
					minHeight:u,
					available:I[F].height-u,
					index:F
				})
				}
			}
		L.sort(function(Z,i){
		return Z.available>i.available?1:-1
		});
	for(var U=0,t=L.length;U<t;U++){
		var H=L[U].index;
		if(H==undefined){
			continue
		}
		var C=q[H],l=I[H],x=l.height,u=C.minHeight,D=Math.max(u,x-Math.ceil(O/(t-U))),g=x-D;
		I[H].height=D;
		O-=g
		}
	}else{
	var S=s,r=V;
	for(U=0;U<G;U++){
		k=q[U];
		J=I[U];
		v=k.margins;
		y=v.left+v.right;
		if(R&&k.flex&&!k.height){
			flexedHeight=Math.ceil((k.flex/r)*S);
			S-=flexedHeight;
			r-=k.flex;
			J.height=flexedHeight;
			J.dirtySize=true
			}
		}
	}
}
if(Y){
	E+=s/2
	}else{
	if(B){
		E+=s
		}
	}
for(U=0;U<G;U++){
	k=q[U];
	J=I[U];
	v=k.margins;
	E+=v.top;
	y=v.left+v.right;
	J.left=W+v.left;
	J.top=E;
	switch(this.align){
		case"stretch":
			e=M-y;
			J.width=e.constrain(k.minWidth||0,k.maxWidth||1000000);
			J.dirtySize=true;
			break;
		case"stretchmax":
			e=w-y;
			J.width=e.constrain(k.minWidth||0,k.maxWidth||1000000);
			J.dirtySize=true;
			break;
		case"center":
			var A=M-J.width-y;
			if(A>0){
			J.left=W+y+(A/2)
			}
		}
		E+=J.height+v.bottom
}
return{
	boxes:I,
	meta:{
		maxWidth:w,
		nonFlexHeight:m,
		desiredHeight:N,
		minimumHeight:o,
		shortfall:N-d,
		tooNarrow:n
	}
}
}
});
Ext.Container.LAYOUTS.vbox=Ext.layout.VBoxLayout;
Ext.layout.ToolbarLayout=Ext.extend(Ext.layout.ContainerLayout,{
	monitorResize:true,
	type:"toolbar",
	triggerWidth:18,
	noItemsMenuText:'<div class="x-toolbar-no-items">(None)</div>',
	lastOverflow:false,
	tableHTML:['<table cellspacing="0" class="x-toolbar-ct">',"<tbody>","<tr>",'<td class="x-toolbar-left" align="{0}">','<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-left-row"></tr>',"</tbody>","</table>","</td>",'<td class="x-toolbar-right" align="right">','<table cellspacing="0" class="x-toolbar-right-ct">',"<tbody>","<tr>","<td>",'<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-right-row"></tr>',"</tbody>","</table>","</td>","<td>",'<table cellspacing="0">',"<tbody>",'<tr class="x-toolbar-extras-row"></tr>',"</tbody>","</table>","</td>","</tr>","</tbody>","</table>","</td>","</tr>","</tbody>","</table>"].join(""),
	onLayout:function(e,k){
		if(!this.leftTr){
			var h=e.buttonAlign=="center"?"center":"left";
			k.addClass("x-toolbar-layout-ct");
			k.insertHtml("beforeEnd",String.format(this.tableHTML,h));
			this.leftTr=k.child("tr.x-toolbar-left-row",true);
			this.rightTr=k.child("tr.x-toolbar-right-row",true);
			this.extrasTr=k.child("tr.x-toolbar-extras-row",true);
			if(this.hiddenItem==undefined){
				this.hiddenItems=[]
				}
			}
		var l=e.buttonAlign=="right"?this.rightTr:this.leftTr,m=e.items.items,d=0;
	for(var b=0,g=m.length,n;b<g;b++,d++){
		n=m[b];
		if(n.isFill){
			l=this.rightTr;
			d=-1
			}else{
			if(!n.rendered){
				n.render(this.insertCell(n,l,d));
				this.configureItem(n)
				}else{
				if(!n.xtbHidden&&!this.isValidParent(n,l.childNodes[d])){
					var a=this.insertCell(n,l,d);
					a.appendChild(n.getPositionEl().dom);
					n.container=Ext.get(a)
					}
				}
		}
	}
this.cleanup(this.leftTr);
this.cleanup(this.rightTr);
this.cleanup(this.extrasTr);
this.fitToSize(k)
},
cleanup:function(b){
	var e=b.childNodes,a,d;
	for(a=e.length-1;a>=0&&(d=e[a]);a--){
		if(!d.firstChild){
			b.removeChild(d)
			}
		}
	},
insertCell:function(e,b,a){
	var d=document.createElement("td");
	d.className="x-toolbar-cell";
	b.insertBefore(d,b.childNodes[a]||null);
	return d
	},
hideItem:function(a){
	this.hiddenItems.push(a);
	a.xtbHidden=true;
	a.xtbWidth=a.getPositionEl().dom.parentNode.offsetWidth;
	a.hide()
	},
unhideItem:function(a){
	a.show();
	a.xtbHidden=false;
	this.hiddenItems.remove(a)
	},
getItemWidth:function(a){
	return a.hidden?(a.xtbWidth||0):a.getPositionEl().dom.parentNode.offsetWidth
	},
fitToSize:function(l){
	if(this.container.enableOverflow===false){
		return
	}
	var b=l.dom.clientWidth,k=l.dom.firstChild.offsetWidth,n=b-this.triggerWidth,a=this.lastWidth||0,c=this.hiddenItems,e=c.length!=0,o=b>=a;
	this.lastWidth=b;
	if(k>b||(e&&o)){
		var m=this.container.items.items,h=m.length,d=0,p;
		for(var g=0;g<h;g++){
			p=m[g];
			if(!p.isFill){
				d+=this.getItemWidth(p);
				if(d>n){
					if(!(p.hidden||p.xtbHidden)){
						this.hideItem(p)
						}
					}else{
				if(p.xtbHidden){
					this.unhideItem(p)
					}
				}
		}
	}
}
e=c.length!=0;
if(e){
	this.initMore();
	if(!this.lastOverflow){
		this.container.fireEvent("overflowchange",this.container,true);
		this.lastOverflow=true
		}
	}else{
	if(this.more){
		this.clearMenu();
		this.more.destroy();
		delete this.more;
		if(this.lastOverflow){
			this.container.fireEvent("overflowchange",this.container,false);
			this.lastOverflow=false
			}
		}
}
},
createMenuConfig:function(c,a){
	var b=Ext.apply({},c.initialConfig),d=c.toggleGroup;
	Ext.copyTo(b,c,["iconCls","icon","itemId","disabled","handler","scope","menu"]);
	Ext.apply(b,{
		text:c.overflowText||c.text,
		hideOnClick:a
	});
	if(d||c.enableToggle){
		Ext.apply(b,{
			group:d,
			checked:c.pressed,
			listeners:{
				checkchange:function(g,e){
					c.toggle(e)
					}
				}
		})
}
delete b.ownerCt;
delete b.xtype;
delete b.id;
return b
},
addComponentToMenu:function(b,a){
	if(a instanceof Ext.Toolbar.Separator){
		b.add("-")
		}else{
		if(Ext.isFunction(a.isXType)){
			if(a.isXType("splitbutton")){
				b.add(this.createMenuConfig(a,true))
				}else{
				if(a.isXType("button")){
					b.add(this.createMenuConfig(a,!a.menu))
					}else{
					if(a.isXType("buttongroup")){
						a.items.each(function(c){
							this.addComponentToMenu(b,c)
							},this)
						}
					}
			}
	}
}
},
clearMenu:function(){
	var a=this.moreMenu;
	if(a&&a.items){
		a.items.each(function(b){
			delete b.menu
			})
		}
	},
beforeMoreShow:function(h){
	var b=this.container.items.items,a=b.length,g,e;
	var c=function(k,i){
		return k.isXType("buttongroup")&&!(i instanceof Ext.Toolbar.Separator)
		};

	this.clearMenu();
	h.removeAll();
	for(var d=0;d<a;d++){
		g=b[d];
		if(g.xtbHidden){
			if(e&&(c(g,e)||c(e,g))){
				h.add("-")
				}
				this.addComponentToMenu(h,g);
			e=g
			}
		}
	if(h.items.length<1){
	h.add(this.noItemsMenuText)
	}
},
initMore:function(){
	if(!this.more){
		this.moreMenu=new Ext.menu.Menu({
			ownerCt:this.container,
			listeners:{
				beforeshow:this.beforeMoreShow,
				scope:this
			}
		});
	this.more=new Ext.Button({
		iconCls:"x-toolbar-more-icon",
		cls:"x-toolbar-more",
		menu:this.moreMenu,
		ownerCt:this.container
		});
	var a=this.insertCell(this.more,this.extrasTr,100);
	this.more.render(a)
	}
},
destroy:function(){
	Ext.destroy(this.more,this.moreMenu);
	delete this.leftTr;
	delete this.rightTr;
	delete this.extrasTr;
	Ext.layout.ToolbarLayout.superclass.destroy.call(this)
	}
});
Ext.Container.LAYOUTS.toolbar=Ext.layout.ToolbarLayout;
Ext.layout.MenuLayout=Ext.extend(Ext.layout.ContainerLayout,{
	monitorResize:true,
	type:"menu",
	setContainer:function(a){
		this.monitorResize=!a.floating;
		a.on("autosize",this.doAutoSize,this);
		Ext.layout.MenuLayout.superclass.setContainer.call(this,a)
		},
	renderItem:function(g,b,e){
		if(!this.itemTpl){
			this.itemTpl=Ext.layout.MenuLayout.prototype.itemTpl=new Ext.XTemplate('<li id="{itemId}" class="{itemCls}">','<tpl if="needsIcon">','<img alt="{altText}" src="{icon}" class="{iconCls}"/>',"</tpl>","</li>")
			}
			if(g&&!g.rendered){
			if(Ext.isNumber(b)){
				b=e.dom.childNodes[b]
				}
				var d=this.getItemArgs(g);
			g.render(g.positionEl=b?this.itemTpl.insertBefore(b,d,true):this.itemTpl.append(e,d,true));
			g.positionEl.menuItemId=g.getItemId();
			if(!d.isMenuItem&&d.needsIcon){
				g.positionEl.addClass("x-menu-list-item-indent")
				}
				this.configureItem(g)
			}else{
			if(g&&!this.isValidParent(g,e)){
				if(Ext.isNumber(b)){
					b=e.dom.childNodes[b]
					}
					e.dom.insertBefore(g.getActionEl().dom,b||null)
				}
			}
	},
getItemArgs:function(d){
	var a=d instanceof Ext.menu.Item,b=!(a||d instanceof Ext.menu.Separator);
	return{
		isMenuItem:a,
		needsIcon:b&&(d.icon||d.iconCls),
		icon:d.icon||Ext.BLANK_IMAGE_URL,
		iconCls:"x-menu-item-icon "+(d.iconCls||""),
		itemId:"x-menu-el-"+d.id,
		itemCls:"x-menu-list-item ",
		altText:d.altText||""
		}
	},
isValidParent:function(b,a){
	return b.el.up("li.x-menu-list-item",5).dom.parentNode===(a.dom||a)
	},
onLayout:function(a,b){
	Ext.layout.MenuLayout.superclass.onLayout.call(this,a,b);
	this.doAutoSize()
	},
doAutoSize:function(){
	var c=this.container,a=c.width;
	if(c.floating){
		if(a){
			c.setWidth(a)
			}else{
			if(Ext.isIE){
				c.setWidth(Ext.isStrict&&(Ext.isIE7||Ext.isIE8)?"auto":c.minWidth);
				var d=c.getEl(),b=d.dom.offsetWidth;
				c.setWidth(c.getLayoutTarget().getWidth()+d.getFrameWidth("lr"))
				}
			}
	}
}
});
Ext.Container.LAYOUTS.menu=Ext.layout.MenuLayout;
Ext.Viewport=Ext.extend(Ext.Container,{
	initComponent:function(){
		Ext.Viewport.superclass.initComponent.call(this);
		document.getElementsByTagName("html")[0].className+=" x-viewport";
		this.el=Ext.getBody();
		this.el.setHeight=Ext.emptyFn;
		this.el.setWidth=Ext.emptyFn;
		this.el.setSize=Ext.emptyFn;
		this.el.dom.scroll="no";
		this.allowDomMove=false;
		this.autoWidth=true;
		this.autoHeight=true;
		Ext.EventManager.onWindowResize(this.fireResize,this);
		this.renderTo=this.el
		},
	fireResize:function(a,b){
		this.fireEvent("resize",this,a,b,a,b)
		}
	});
Ext.reg("viewport",Ext.Viewport);
Ext.Panel=Ext.extend(Ext.Container,{
	baseCls:"x-panel",
	collapsedCls:"x-panel-collapsed",
	maskDisabled:true,
	animCollapse:Ext.enableFx,
	headerAsText:true,
	buttonAlign:"right",
	collapsed:false,
	collapseFirst:true,
	minButtonWidth:75,
	elements:"body",
	preventBodyReset:false,
	padding:undefined,
	resizeEvent:"bodyresize",
	toolTarget:"header",
	collapseEl:"bwrap",
	slideAnchor:"t",
	disabledClass:"",
	deferHeight:true,
	expandDefaults:{
		duration:0.25
	},
	collapseDefaults:{
		duration:0.25
	},
	initComponent:function(){
		Ext.Panel.superclass.initComponent.call(this);
		this.addEvents("bodyresize","titlechange","iconchange","collapse","expand","beforecollapse","beforeexpand","beforeclose","close","activate","deactivate");
		if(this.unstyled){
			this.baseCls="x-plain"
			}
			this.toolbars=[];
		if(this.tbar){
			this.elements+=",tbar";
			this.topToolbar=this.createToolbar(this.tbar);
			this.tbar=null
			}
			if(this.bbar){
			this.elements+=",bbar";
			this.bottomToolbar=this.createToolbar(this.bbar);
			this.bbar=null
			}
			if(this.header===true){
			this.elements+=",header";
			this.header=null
			}else{
			if(this.headerCfg||(this.title&&this.header!==false)){
				this.elements+=",header"
				}
			}
		if(this.footerCfg||this.footer===true){
		this.elements+=",footer";
		this.footer=null
		}
		if(this.buttons){
		this.fbar=this.buttons;
		this.buttons=null
		}
		if(this.fbar){
		this.createFbar(this.fbar)
		}
		if(this.autoLoad){
		this.on("render",this.doAutoLoad,this,{
			delay:10
		})
		}
	},
createFbar:function(b){
	var a=this.minButtonWidth;
	this.elements+=",footer";
	this.fbar=this.createToolbar(b,{
		buttonAlign:this.buttonAlign,
		toolbarCls:"x-panel-fbar",
		enableOverflow:false,
		defaults:function(d){
			return{
				minWidth:d.minWidth||a
				}
			}
	});
this.fbar.items.each(function(d){
	d.minWidth=d.minWidth||this.minButtonWidth
	},this);
this.buttons=this.fbar.items.items
},
createToolbar:function(b,c){
	var a;
	if(Ext.isArray(b)){
		b={
			items:b
		}
	}
	a=b.events?Ext.apply(b,c):this.createComponent(Ext.apply({},b,c),"toolbar");
this.toolbars.push(a);
return a
},
createElement:function(a,c){
	if(this[a]){
		c.appendChild(this[a].dom);
		return
	}
	if(a==="bwrap"||this.elements.indexOf(a)!=-1){
		if(this[a+"Cfg"]){
			this[a]=Ext.fly(c).createChild(this[a+"Cfg"])
			}else{
			var b=document.createElement("div");
			b.className=this[a+"Cls"];
			this[a]=Ext.get(c.appendChild(b))
			}
			if(this[a+"CssClass"]){
			this[a].addClass(this[a+"CssClass"])
			}
			if(this[a+"Style"]){
			this[a].applyStyles(this[a+"Style"])
			}
		}
},
onRender:function(g,e){
	Ext.Panel.superclass.onRender.call(this,g,e);
	this.createClasses();
	var a=this.el,h=a.dom,l,i;
	if(this.collapsible&&!this.hideCollapseTool){
		this.tools=this.tools?this.tools.slice(0):[];
		this.tools[this.collapseFirst?"unshift":"push"]({
			id:"toggle",
			handler:this.toggleCollapse,
			scope:this
		})
		}
		if(this.tools){
		i=this.tools;
		this.elements+=(this.header!==false)?",header":""
		}
		this.tools={};

	a.addClass(this.baseCls);
	if(h.firstChild){
		this.header=a.down("."+this.headerCls);
		this.bwrap=a.down("."+this.bwrapCls);
		var k=this.bwrap?this.bwrap:a;
		this.tbar=k.down("."+this.tbarCls);
		this.body=k.down("."+this.bodyCls);
		this.bbar=k.down("."+this.bbarCls);
		this.footer=k.down("."+this.footerCls);
		this.fromMarkup=true
		}
		if(this.preventBodyReset===true){
		a.addClass("x-panel-reset")
		}
		if(this.cls){
		a.addClass(this.cls)
		}
		if(this.buttons){
		this.elements+=",footer"
		}
		if(this.frame){
		a.insertHtml("afterBegin",String.format(Ext.Element.boxMarkup,this.baseCls));
		this.createElement("header",h.firstChild.firstChild.firstChild);
		this.createElement("bwrap",h);
		l=this.bwrap.dom;
		var c=h.childNodes[1],b=h.childNodes[2];
		l.appendChild(c);
		l.appendChild(b);
		var m=l.firstChild.firstChild.firstChild;
		this.createElement("tbar",m);
		this.createElement("body",m);
		this.createElement("bbar",m);
		this.createElement("footer",l.lastChild.firstChild.firstChild);
		if(!this.footer){
			this.bwrap.dom.lastChild.className+=" x-panel-nofooter"
			}
			this.ft=Ext.get(this.bwrap.dom.lastChild);
		this.mc=Ext.get(m)
		}else{
		this.createElement("header",h);
		this.createElement("bwrap",h);
		l=this.bwrap.dom;
		this.createElement("tbar",l);
		this.createElement("body",l);
		this.createElement("bbar",l);
		this.createElement("footer",l);
		if(!this.header){
			this.body.addClass(this.bodyCls+"-noheader");
			if(this.tbar){
				this.tbar.addClass(this.tbarCls+"-noheader")
				}
			}
	}
if(Ext.isDefined(this.padding)){
	this.body.setStyle("padding",this.body.addUnits(this.padding))
	}
	if(this.border===false){
	this.el.addClass(this.baseCls+"-noborder");
	this.body.addClass(this.bodyCls+"-noborder");
	if(this.header){
		this.header.addClass(this.headerCls+"-noborder")
		}
		if(this.footer){
		this.footer.addClass(this.footerCls+"-noborder")
		}
		if(this.tbar){
		this.tbar.addClass(this.tbarCls+"-noborder")
		}
		if(this.bbar){
		this.bbar.addClass(this.bbarCls+"-noborder")
		}
	}
if(this.bodyBorder===false){
	this.body.addClass(this.bodyCls+"-noborder")
	}
	this.bwrap.enableDisplayMode("block");
if(this.header){
	this.header.unselectable();
	if(this.headerAsText){
		this.header.dom.innerHTML='<span class="'+this.headerTextCls+'">'+this.header.dom.innerHTML+"</span>";
		if(this.iconCls){
			this.setIconClass(this.iconCls)
			}
		}
}
if(this.floating){
	this.makeFloating(this.floating)
	}
	if(this.collapsible&&this.titleCollapse&&this.header){
	this.mon(this.header,"click",this.toggleCollapse,this);
	this.header.setStyle("cursor","pointer")
	}
	if(i){
	this.addTool.apply(this,i)
	}
	if(this.fbar){
	this.footer.addClass("x-panel-btns");
	this.fbar.ownerCt=this;
	this.fbar.render(this.footer);
	this.footer.createChild({
		cls:"x-clear"
	})
	}
	if(this.tbar&&this.topToolbar){
	this.topToolbar.ownerCt=this;
	this.topToolbar.render(this.tbar)
	}
	if(this.bbar&&this.bottomToolbar){
	this.bottomToolbar.ownerCt=this;
	this.bottomToolbar.render(this.bbar)
	}
},
setIconClass:function(b){
	var a=this.iconCls;
	this.iconCls=b;
	if(this.rendered&&this.header){
		if(this.frame){
			this.header.addClass("x-panel-icon");
			this.header.replaceClass(a,this.iconCls)
			}else{
			var e=this.header,c=e.child("img.x-panel-inline-icon");
			if(c){
				Ext.fly(c).replaceClass(a,this.iconCls)
				}else{
				var d=e.child("span."+this.headerTextCls);
				if(d){
					Ext.DomHelper.insertBefore(d.dom,{
						tag:"img",
						alt:"",
						src:Ext.BLANK_IMAGE_URL,
						cls:"x-panel-inline-icon "+this.iconCls
						})
					}
				}
		}
}
this.fireEvent("iconchange",this,b,a)
},
makeFloating:function(a){
	this.floating=true;
	this.el=new Ext.Layer(Ext.apply({},a,{
		shadow:Ext.isDefined(this.shadow)?this.shadow:"sides",
		shadowOffset:this.shadowOffset,
		constrain:false,
		shim:this.shim===false?false:undefined
		}),this.el)
	},
getTopToolbar:function(){
	return this.topToolbar
	},
getBottomToolbar:function(){
	return this.bottomToolbar
	},
getFooterToolbar:function(){
	return this.fbar
	},
addButton:function(a,c,b){
	if(!this.fbar){
		this.createFbar([])
		}
		if(c){
		if(Ext.isString(a)){
			a={
				text:a
			}
		}
		a=Ext.apply({
		handler:c,
		scope:b
	},a)
	}
	return this.fbar.add(a)
},
addTool:function(){
	if(!this.rendered){
		if(!this.tools){
			this.tools=[]
			}
			Ext.each(arguments,function(a){
			this.tools.push(a)
			},this);
		return
	}
	if(!this[this.toolTarget]){
		return
	}
	if(!this.toolTemplate){
		var h=new Ext.Template('<div class="x-tool x-tool-{id}">&#160;</div>');
		h.disableFormats=true;
		h.compile();
		Ext.Panel.prototype.toolTemplate=h
		}
		for(var g=0,d=arguments,c=d.length;g<c;g++){
		var b=d[g];
		if(!this.tools[b.id]){
			var k="x-tool-"+b.id+"-over";
			var e=this.toolTemplate.insertFirst(this[this.toolTarget],b,true);
			this.tools[b.id]=e;
			e.enableDisplayMode("block");
			this.mon(e,"click",this.createToolHandler(e,b,k,this));
			if(b.on){
				this.mon(e,b.on)
				}
				if(b.hidden){
				e.hide()
				}
				if(b.qtip){
				if(Ext.isObject(b.qtip)){
					Ext.QuickTips.register(Ext.apply({
						target:e.id
						},b.qtip))
					}else{
					e.dom.qtip=b.qtip
					}
				}
			e.addClassOnOver(k)
		}
	}
},
onLayout:function(b,a){
	Ext.Panel.superclass.onLayout.apply(this,arguments);
	if(this.hasLayout&&this.toolbars.length>0){
		Ext.each(this.toolbars,function(c){
			c.doLayout(undefined,a)
			});
		this.syncHeight()
		}
	},
syncHeight:function(){
	var b=this.toolbarHeight,c=this.body,a=this.lastSize.height,d;
	if(this.autoHeight||!Ext.isDefined(a)||a=="auto"){
		return
	}
	if(b!=this.getToolbarHeight()){
		b=Math.max(0,a-this.getFrameHeight());
		c.setHeight(b);
		d=c.getSize();
		this.toolbarHeight=this.getToolbarHeight();
		this.onBodyResize(d.width,d.height)
		}
	},
onShow:function(){
	if(this.floating){
		return this.el.show()
		}
		Ext.Panel.superclass.onShow.call(this)
	},
onHide:function(){
	if(this.floating){
		return this.el.hide()
		}
		Ext.Panel.superclass.onHide.call(this)
	},
createToolHandler:function(c,a,d,b){
	return function(g){
		c.removeClass(d);
		if(a.stopEvent!==false){
			g.stopEvent()
			}
			if(a.handler){
			a.handler.call(a.scope||c,g,c,b,a)
			}
		}
},
afterRender:function(){
	if(this.floating&&!this.hidden){
		this.el.show()
		}
		if(this.title){
		this.setTitle(this.title)
		}
		Ext.Panel.superclass.afterRender.call(this);
	if(this.collapsed){
		this.collapsed=false;
		this.collapse(false)
		}
		this.initEvents()
	},
getKeyMap:function(){
	if(!this.keyMap){
		this.keyMap=new Ext.KeyMap(this.el,this.keys)
		}
		return this.keyMap
	},
initEvents:function(){
	if(this.keys){
		this.getKeyMap()
		}
		if(this.draggable){
		this.initDraggable()
		}
		if(this.toolbars.length>0){
		Ext.each(this.toolbars,function(a){
			a.doLayout();
			a.on({
				scope:this,
				afterlayout:this.syncHeight,
				remove:this.syncHeight
				})
			},this);
		this.syncHeight()
		}
	},
initDraggable:function(){
	this.dd=new Ext.Panel.DD(this,Ext.isBoolean(this.draggable)?null:this.draggable)
	},
beforeEffect:function(a){
	if(this.floating){
		this.el.beforeAction()
		}
		if(a!==false){
		this.el.addClass("x-panel-animated")
		}
	},
afterEffect:function(a){
	this.syncShadow();
	this.el.removeClass("x-panel-animated")
	},
createEffect:function(c,b,d){
	var e={
		scope:d,
		block:true
	};

	if(c===true){
		e.callback=b;
		return e
		}else{
		if(!c.callback){
			e.callback=b
			}else{
			e.callback=function(){
				b.call(d);
				Ext.callback(c.callback,c.scope)
				}
			}
	}
return Ext.applyIf(e,c)
},
collapse:function(b){
	if(this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforecollapse",this,b)===false){
		return
	}
	var a=b===true||(b!==false&&this.animCollapse);
	this.beforeEffect(a);
	this.onCollapse(a,b);
	return this
	},
onCollapse:function(a,b){
	if(a){
		this[this.collapseEl].slideOut(this.slideAnchor,Ext.apply(this.createEffect(b||true,this.afterCollapse,this),this.collapseDefaults))
		}else{
		this[this.collapseEl].hide(this.hideMode);
		this.afterCollapse(false)
		}
	},
afterCollapse:function(a){
	this.collapsed=true;
	this.el.addClass(this.collapsedCls);
	if(a!==false){
		this[this.collapseEl].hide(this.hideMode)
		}
		this.afterEffect(a);
	this.cascade(function(b){
		if(b.lastSize){
			b.lastSize={
				width:undefined,
				height:undefined
			}
		}
	});
this.fireEvent("collapse",this)
},
expand:function(b){
	if(!this.collapsed||this.el.hasFxBlock()||this.fireEvent("beforeexpand",this,b)===false){
		return
	}
	var a=b===true||(b!==false&&this.animCollapse);
	this.el.removeClass(this.collapsedCls);
	this.beforeEffect(a);
	this.onExpand(a,b);
	return this
	},
onExpand:function(a,b){
	if(a){
		this[this.collapseEl].slideIn(this.slideAnchor,Ext.apply(this.createEffect(b||true,this.afterExpand,this),this.expandDefaults))
		}else{
		this[this.collapseEl].show(this.hideMode);
		this.afterExpand(false)
		}
	},
afterExpand:function(a){
	this.collapsed=false;
	if(a!==false){
		this[this.collapseEl].show(this.hideMode)
		}
		this.afterEffect(a);
	if(this.deferLayout){
		delete this.deferLayout;
		this.doLayout(true)
		}
		this.fireEvent("expand",this)
	},
toggleCollapse:function(a){
	this[this.collapsed?"expand":"collapse"](a);
	return this
	},
onDisable:function(){
	if(this.rendered&&this.maskDisabled){
		this.el.mask()
		}
		Ext.Panel.superclass.onDisable.call(this)
	},
onEnable:function(){
	if(this.rendered&&this.maskDisabled){
		this.el.unmask()
		}
		Ext.Panel.superclass.onEnable.call(this)
	},
onResize:function(g,d,c,e){
	var a=g,b=d;
	if(Ext.isDefined(a)||Ext.isDefined(b)){
		if(!this.collapsed){
			if(Ext.isNumber(a)){
				this.body.setWidth(a=this.adjustBodyWidth(a-this.getFrameWidth()))
				}else{
				if(a=="auto"){
					a=this.body.setWidth("auto").dom.offsetWidth
					}else{
					a=this.body.dom.offsetWidth
					}
				}
			if(this.tbar){
			this.tbar.setWidth(a);
			if(this.topToolbar){
				this.topToolbar.setSize(a)
				}
			}
		if(this.bbar){
		this.bbar.setWidth(a);
		if(this.bottomToolbar){
			this.bottomToolbar.setSize(a);
			if(Ext.isIE){
				this.bbar.setStyle("position","static");
				this.bbar.setStyle("position","")
				}
			}
	}
if(this.footer){
	this.footer.setWidth(a);
	if(this.fbar){
		this.fbar.setSize(Ext.isIE?(a-this.footer.getFrameWidth("lr")):"auto")
		}
	}
if(Ext.isNumber(b)){
	b=Math.max(0,b-this.getFrameHeight());
	this.body.setHeight(b)
	}else{
	if(b=="auto"){
		this.body.setHeight(b)
		}
	}
if(this.disabled&&this.el._mask){
	this.el._mask.setSize(this.el.dom.clientWidth,this.el.getHeight())
	}
}else{
	this.queuedBodySize={
		width:a,
		height:b
	};

	if(!this.queuedExpand&&this.allowQueuedExpand!==false){
		this.queuedExpand=true;
		this.on("expand",function(){
			delete this.queuedExpand;
			this.onResize(this.queuedBodySize.width,this.queuedBodySize.height)
			},this,{
			single:true
		})
		}
	}
this.onBodyResize(a,b)
}
this.syncShadow();
Ext.Panel.superclass.onResize.call(this,g,d,c,e)
},
onBodyResize:function(a,b){
	this.fireEvent("bodyresize",this,a,b)
	},
getToolbarHeight:function(){
	var a=0;
	if(this.rendered){
		Ext.each(this.toolbars,function(b){
			a+=b.getHeight()
			},this)
		}
		return a
	},
adjustBodyHeight:function(a){
	return a
	},
adjustBodyWidth:function(a){
	return a
	},
onPosition:function(){
	this.syncShadow()
	},
getFrameWidth:function(){
	var b=this.el.getFrameWidth("lr")+this.bwrap.getFrameWidth("lr");
	if(this.frame){
		var a=this.bwrap.dom.firstChild;
		b+=(Ext.fly(a).getFrameWidth("l")+Ext.fly(a.firstChild).getFrameWidth("r"));
		b+=this.mc.getFrameWidth("lr")
		}
		return b
	},
getFrameHeight:function(){
	var a=this.el.getFrameWidth("tb")+this.bwrap.getFrameWidth("tb");
	a+=(this.tbar?this.tbar.getHeight():0)+(this.bbar?this.bbar.getHeight():0);
	if(this.frame){
		a+=this.el.dom.firstChild.offsetHeight+this.ft.dom.offsetHeight+this.mc.getFrameWidth("tb")
		}else{
		a+=(this.header?this.header.getHeight():0)+(this.footer?this.footer.getHeight():0)
		}
		return a
	},
getInnerWidth:function(){
	return this.getSize().width-this.getFrameWidth()
	},
getInnerHeight:function(){
	return this.body.getHeight()
	},
syncShadow:function(){
	if(this.floating){
		this.el.sync(true)
		}
	},
getLayoutTarget:function(){
	return this.body
	},
getContentTarget:function(){
	return this.body
	},
setTitle:function(b,a){
	this.title=b;
	if(this.header&&this.headerAsText){
		this.header.child("span").update(b)
		}
		if(a){
		this.setIconClass(a)
		}
		this.fireEvent("titlechange",this,b);
	return this
	},
getUpdater:function(){
	return this.body.getUpdater()
	},
load:function(){
	var a=this.body.getUpdater();
	a.update.apply(a,arguments);
	return this
	},
beforeDestroy:function(){
	Ext.Panel.superclass.beforeDestroy.call(this);
	if(this.header){
		this.header.removeAllListeners()
		}
		if(this.tools){
		for(var a in this.tools){
			Ext.destroy(this.tools[a])
			}
		}
		if(this.toolbars.length>0){
	Ext.each(this.toolbars,function(b){
		b.un("afterlayout",this.syncHeight,this);
		b.un("remove",this.syncHeight,this)
		},this)
	}
	if(Ext.isArray(this.buttons)){
	while(this.buttons.length){
		Ext.destroy(this.buttons[0])
		}
	}
if(this.rendered){
	Ext.destroy(this.ft,this.header,this.footer,this.tbar,this.bbar,this.body,this.mc,this.bwrap,this.dd);
	if(this.fbar){
		Ext.destroy(this.fbar,this.fbar.el)
		}
	}
Ext.destroy(this.toolbars)
},
createClasses:function(){
	this.headerCls=this.baseCls+"-header";
	this.headerTextCls=this.baseCls+"-header-text";
	this.bwrapCls=this.baseCls+"-bwrap";
	this.tbarCls=this.baseCls+"-tbar";
	this.bodyCls=this.baseCls+"-body";
	this.bbarCls=this.baseCls+"-bbar";
	this.footerCls=this.baseCls+"-footer"
	},
createGhost:function(a,e,b){
	var d=document.createElement("div");
	d.className="x-panel-ghost "+(a?a:"");
	if(this.header){
		d.appendChild(this.el.dom.firstChild.cloneNode(true))
		}
		Ext.fly(d.appendChild(document.createElement("ul"))).setHeight(this.bwrap.getHeight());
	d.style.width=this.el.dom.offsetWidth+"px";
	if(!b){
		this.container.dom.appendChild(d)
		}else{
		Ext.getDom(b).appendChild(d)
		}
		if(e!==false&&this.el.useShim!==false){
		var c=new Ext.Layer({
			shadow:false,
			useDisplay:true,
			constrain:false
		},d);
		c.show();
		return c
		}else{
		return new Ext.Element(d)
		}
	},
doAutoLoad:function(){
	var a=this.body.getUpdater();
	if(this.renderer){
		a.setRenderer(this.renderer)
		}
		a.update(Ext.isObject(this.autoLoad)?this.autoLoad:{
		url:this.autoLoad
		})
	},
getTool:function(a){
	return this.tools[a]
	}
});
Ext.reg("panel",Ext.Panel);
Ext.Editor=function(b,a){
	if(b.field){
		this.field=Ext.create(b.field,"textfield");
		a=Ext.apply({},b);
		delete a.field
		}else{
		this.field=b
		}
		Ext.Editor.superclass.constructor.call(this,a)
	};

Ext.extend(Ext.Editor,Ext.Component,{
	allowBlur:true,
	value:"",
	alignment:"c-c?",
	offsets:[0,0],
	shadow:"frame",
	constrain:false,
	swallowKeys:true,
	completeOnEnter:true,
	cancelOnEsc:true,
	updateEl:false,
	initComponent:function(){
		Ext.Editor.superclass.initComponent.call(this);
		this.addEvents("beforestartedit","startedit","beforecomplete","complete","canceledit","specialkey")
		},
	onRender:function(b,a){
		this.el=new Ext.Layer({
			shadow:this.shadow,
			cls:"x-editor",
			parentEl:b,
			shim:this.shim,
			shadowOffset:this.shadowOffset||4,
			id:this.id,
			constrain:this.constrain
			});
		if(this.zIndex){
			this.el.setZIndex(this.zIndex)
			}
			this.el.setStyle("overflow",Ext.isGecko?"auto":"hidden");
		if(this.field.msgTarget!="title"){
			this.field.msgTarget="qtip"
			}
			this.field.inEditor=true;
		this.mon(this.field,{
			scope:this,
			blur:this.onBlur,
			specialkey:this.onSpecialKey
			});
		if(this.field.grow){
			this.mon(this.field,"autosize",this.el.sync,this.el,{
				delay:1
			})
			}
			this.field.render(this.el).show();
		this.field.getEl().dom.name="";
		if(this.swallowKeys){
			this.field.el.swallowEvent(["keypress","keydown"])
			}
		},
onSpecialKey:function(g,d){
	var b=d.getKey(),a=this.completeOnEnter&&b==d.ENTER,c=this.cancelOnEsc&&b==d.ESC;
	if(a||c){
		d.stopEvent();
		if(a){
			this.completeEdit()
			}else{
			this.cancelEdit()
			}
			if(g.triggerBlur){
			g.triggerBlur()
			}
		}
	this.fireEvent("specialkey",g,d)
	},
startEdit:function(b,c){
	if(this.editing){
		this.completeEdit()
		}
		this.boundEl=Ext.get(b);
	var a=c!==undefined?c:this.boundEl.dom.innerHTML;
	if(!this.rendered){
		this.render(this.parentEl||document.body)
		}
		if(this.fireEvent("beforestartedit",this,this.boundEl,a)!==false){
		this.startValue=a;
		this.field.reset();
		this.field.setValue(a);
		this.realign(true);
		this.editing=true;
		this.show()
		}
	},
doAutoSize:function(){
	if(this.autoSize){
		var b=this.boundEl.getSize(),a=this.field.getSize();
		switch(this.autoSize){
			case"width":
				this.setSize(b.width,a.height);
				break;
			case"height":
				this.setSize(a.width,b.height);
				break;
			case"none":
				this.setSize(a.width,a.height);
				break;
			default:
				this.setSize(b.width,b.height)
				}
			}
},
setSize:function(a,b){
	delete this.field.lastSize;
	this.field.setSize(a,b);
	if(this.el){
		if(Ext.isGecko2||Ext.isOpera||(Ext.isIE7&&Ext.isStrict)){
			this.el.setSize(a,b)
			}
			this.el.sync()
		}
	},
realign:function(a){
	if(a===true){
		this.doAutoSize()
		}
		this.el.alignTo(this.boundEl,this.alignment,this.offsets)
	},
completeEdit:function(a){
	if(!this.editing){
		return
	}
	if(this.field.assertValue){
		this.field.assertValue()
		}
		var b=this.getValue();
	if(!this.field.isValid()){
		if(this.revertInvalid!==false){
			this.cancelEdit(a)
			}
			return
	}
	if(String(b)===String(this.startValue)&&this.ignoreNoChange){
		this.hideEdit(a);
		return
	}
	if(this.fireEvent("beforecomplete",this,b,this.startValue)!==false){
		b=this.getValue();
		if(this.updateEl&&this.boundEl){
			this.boundEl.update(b)
			}
			this.hideEdit(a);
		this.fireEvent("complete",this,b,this.startValue)
		}
	},
onShow:function(){
	this.el.show();
	if(this.hideEl!==false){
		this.boundEl.hide()
		}
		this.field.show().focus(false,true);
	this.fireEvent("startedit",this.boundEl,this.startValue)
	},
cancelEdit:function(a){
	if(this.editing){
		var b=this.getValue();
		this.setValue(this.startValue);
		this.hideEdit(a);
		this.fireEvent("canceledit",this,b,this.startValue)
		}
	},
hideEdit:function(a){
	if(a!==true){
		this.editing=false;
		this.hide()
		}
	},
onBlur:function(){
	if(this.allowBlur===true&&this.editing&&this.selectSameEditor!==true){
		this.completeEdit()
		}
	},
onHide:function(){
	if(this.editing){
		this.completeEdit();
		return
	}
	this.field.blur();
	if(this.field.collapse){
		this.field.collapse()
		}
		this.el.hide();
	if(this.hideEl!==false){
		this.boundEl.show()
		}
	},
setValue:function(a){
	this.field.setValue(a)
	},
getValue:function(){
	return this.field.getValue()
	},
beforeDestroy:function(){
	Ext.destroyMembers(this,"field");
	delete this.parentEl;
	delete this.boundEl
	}
});
Ext.reg("editor",Ext.Editor);
Ext.ColorPalette=Ext.extend(Ext.Component,{
	itemCls:"x-color-palette",
	value:null,
	clickEvent:"click",
	ctype:"Ext.ColorPalette",
	allowReselect:false,
	colors:["000000","993300","333300","003300","003366","000080","333399","333333","800000","FF6600","808000","008000","008080","0000FF","666699","808080","FF0000","FF9900","99CC00","339966","33CCCC","3366FF","800080","969696","FF00FF","FFCC00","FFFF00","00FF00","00FFFF","00CCFF","993366","C0C0C0","FF99CC","FFCC99","FFFF99","CCFFCC","CCFFFF","99CCFF","CC99FF","FFFFFF"],
	initComponent:function(){
		Ext.ColorPalette.superclass.initComponent.call(this);
		this.addEvents("select");
		if(this.handler){
			this.on("select",this.handler,this.scope,true)
			}
		},
onRender:function(b,a){
	this.autoEl={
		tag:"div",
		cls:this.itemCls
		};

	Ext.ColorPalette.superclass.onRender.call(this,b,a);
	var c=this.tpl||new Ext.XTemplate('<tpl for="."><a href="#" class="color-{.}" hidefocus="on"><em><span style="background:#{.}" unselectable="on">&#160;</span></em></a></tpl>');
	c.overwrite(this.el,this.colors);
	this.mon(this.el,this.clickEvent,this.handleClick,this,{
		delegate:"a"
	});
	if(this.clickEvent!="click"){
		this.mon(this.el,"click",Ext.emptyFn,this,{
			delegate:"a",
			preventDefault:true
		})
		}
	},
afterRender:function(){
	Ext.ColorPalette.superclass.afterRender.call(this);
	if(this.value){
		var a=this.value;
		this.value=null;
		this.select(a,true)
		}
	},
handleClick:function(b,a){
	b.preventDefault();
	if(!this.disabled){
		var d=a.className.match(/(?:^|\s)color-(.{6})(?:\s|$)/)[1];
		this.select(d.toUpperCase())
		}
	},
select:function(b,a){
	b=b.replace("#","");
	if(b!=this.value||this.allowReselect){
		var c=this.el;
		if(this.value){
			c.child("a.color-"+this.value).removeClass("x-color-palette-sel")
			}
			c.child("a.color-"+b).addClass("x-color-palette-sel");
		this.value=b;
		if(a!==true){
			this.fireEvent("select",this,b)
			}
		}
}
});
Ext.reg("colorpalette",Ext.ColorPalette);
Ext.DatePicker=Ext.extend(Ext.BoxComponent,{
	todayText:"Today",
	okText:"&#160;OK&#160;",
	cancelText:"Cancel",
	todayTip:"{0} (Spacebar)",
	minText:"This date is before the minimum date",
	maxText:"This date is after the maximum date",
	format:"m/d/y",
	disabledDaysText:"Disabled",
	disabledDatesText:"Disabled",
	monthNames:Date.monthNames,
	dayNames:Date.dayNames,
	nextText:"Next Month (Control+Right)",
	prevText:"Previous Month (Control+Left)",
	monthYearText:"Choose a month (Control+Up/Down to move years)",
	startDay:0,
	showToday:true,
	focusOnSelect:true,
	initHour:12,
	initComponent:function(){
		Ext.DatePicker.superclass.initComponent.call(this);
		this.value=this.value?this.value.clearTime(true):new Date().clearTime();
		this.addEvents("select");
		if(this.handler){
			this.on("select",this.handler,this.scope||this)
			}
			this.initDisabledDays()
		},
	initDisabledDays:function(){
		if(!this.disabledDatesRE&&this.disabledDates){
			var b=this.disabledDates,a=b.length-1,c="(?:";
			Ext.each(b,function(g,e){
				c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];
				if(e!=a){
					c+="|"
					}
				},this);
		this.disabledDatesRE=new RegExp(c+")")
		}
	},
setDisabledDates:function(a){
	if(Ext.isArray(a)){
		this.disabledDates=a;
		this.disabledDatesRE=null
		}else{
		this.disabledDatesRE=a
		}
		this.initDisabledDays();
	this.update(this.value,true)
	},
setDisabledDays:function(a){
	this.disabledDays=a;
	this.update(this.value,true)
	},
setMinDate:function(a){
	this.minDate=a;
	this.update(this.value,true)
	},
setMaxDate:function(a){
	this.maxDate=a;
	this.update(this.value,true)
	},
setValue:function(a){
	this.value=a.clearTime(true);
	this.update(this.value)
	},
getValue:function(){
	return this.value
	},
focus:function(){
	this.update(this.activeDate)
	},
onEnable:function(a){
	Ext.DatePicker.superclass.onEnable.call(this);
	this.doDisabled(false);
	this.update(a?this.value:this.activeDate);
	if(Ext.isIE){
		this.el.repaint()
		}
	},
onDisable:function(){
	Ext.DatePicker.superclass.onDisable.call(this);
	this.doDisabled(true);
	if(Ext.isIE&&!Ext.isIE8){
		Ext.each([].concat(this.textNodes,this.el.query("th span")),function(a){
			Ext.fly(a).repaint()
			})
		}
	},
doDisabled:function(a){
	this.keyNav.setDisabled(a);
	this.prevRepeater.setDisabled(a);
	this.nextRepeater.setDisabled(a);
	if(this.showToday){
		this.todayKeyListener.setDisabled(a);
		this.todayBtn.setDisabled(a)
		}
	},
onRender:function(e,b){
	var a=['<table cellspacing="0">','<tr><td class="x-date-left"><a href="#" title="',this.prevText,'">&#160;</a></td><td class="x-date-middle" align="center"></td><td class="x-date-right"><a href="#" title="',this.nextText,'">&#160;</a></td></tr>','<tr><td colspan="3"><table class="x-date-inner" cellspacing="0"><thead><tr>'],c=this.dayNames,h;
	for(h=0;h<7;h++){
		var l=this.startDay+h;
		if(l>6){
			l=l-7
			}
			a.push("<th><span>",c[l].substr(0,1),"</span></th>")
		}
		a[a.length]="</tr></thead><tbody><tr>";
	for(h=0;h<42;h++){
		if(h%7===0&&h!==0){
			a[a.length]="</tr><tr>"
			}
			a[a.length]='<td><a href="#" hidefocus="on" class="x-date-date" tabIndex="1"><em><span></span></em></a></td>'
		}
		a.push("</tr></tbody></table></td></tr>",this.showToday?'<tr><td colspan="3" class="x-date-bottom" align="center"></td></tr>':"",'</table><div class="x-date-mp"></div>');
	var k=document.createElement("div");
	k.className="x-date-picker";
	k.innerHTML=a.join("");
	e.dom.insertBefore(k,b);
	this.el=Ext.get(k);
	this.eventEl=Ext.get(k.firstChild);
	this.prevRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-left a"),{
		handler:this.showPrevMonth,
		scope:this,
		preventDefault:true,
		stopDefault:true
	});
	this.nextRepeater=new Ext.util.ClickRepeater(this.el.child("td.x-date-right a"),{
		handler:this.showNextMonth,
		scope:this,
		preventDefault:true,
		stopDefault:true
	});
	this.monthPicker=this.el.down("div.x-date-mp");
	this.monthPicker.enableDisplayMode("block");
	this.keyNav=new Ext.KeyNav(this.eventEl,{
		left:function(d){
			if(d.ctrlKey){
				this.showPrevMonth()
				}else{
				this.update(this.activeDate.add("d",-1))
				}
			},
	right:function(d){
		if(d.ctrlKey){
			this.showNextMonth()
			}else{
			this.update(this.activeDate.add("d",1))
			}
		},
	up:function(d){
		if(d.ctrlKey){
			this.showNextYear()
			}else{
			this.update(this.activeDate.add("d",-7))
			}
		},
down:function(d){
	if(d.ctrlKey){
		this.showPrevYear()
		}else{
		this.update(this.activeDate.add("d",7))
		}
	},
pageUp:function(d){
	this.showNextMonth()
	},
pageDown:function(d){
	this.showPrevMonth()
	},
enter:function(d){
	d.stopPropagation();
	return true
	},
scope:this
});
this.el.unselectable();
this.cells=this.el.select("table.x-date-inner tbody td");
this.textNodes=this.el.query("table.x-date-inner tbody span");
this.mbtn=new Ext.Button({
	text:"&#160;",
	tooltip:this.monthYearText,
	renderTo:this.el.child("td.x-date-middle",true)
	});
this.mbtn.el.child("em").addClass("x-btn-arrow");
if(this.showToday){
	this.todayKeyListener=this.eventEl.addKeyListener(Ext.EventObject.SPACE,this.selectToday,this);
	var g=(new Date()).dateFormat(this.format);
	this.todayBtn=new Ext.Button({
		renderTo:this.el.child("td.x-date-bottom",true),
		text:String.format(this.todayText,g),
		tooltip:String.format(this.todayTip,g),
		handler:this.selectToday,
		scope:this
	})
	}
	this.mon(this.eventEl,"mousewheel",this.handleMouseWheel,this);
this.mon(this.eventEl,"click",this.handleDateClick,this,{
	delegate:"a.x-date-date"
});
this.mon(this.mbtn,"click",this.showMonthPicker,this);
this.onEnable(true)
},
createMonthPicker:function(){
	if(!this.monthPicker.dom.firstChild){
		var a=['<table border="0" cellspacing="0">'];
		for(var b=0;b<6;b++){
			a.push('<tr><td class="x-date-mp-month"><a href="#">',Date.getShortMonthName(b),"</a></td>",'<td class="x-date-mp-month x-date-mp-sep"><a href="#">',Date.getShortMonthName(b+6),"</a></td>",b===0?'<td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-prev"></a></td><td class="x-date-mp-ybtn" align="center"><a class="x-date-mp-next"></a></td></tr>':'<td class="x-date-mp-year"><a href="#"></a></td><td class="x-date-mp-year"><a href="#"></a></td></tr>')
			}
			a.push('<tr class="x-date-mp-btns"><td colspan="4"><button type="button" class="x-date-mp-ok">',this.okText,'</button><button type="button" class="x-date-mp-cancel">',this.cancelText,"</button></td></tr>","</table>");
		this.monthPicker.update(a.join(""));
		this.mon(this.monthPicker,"click",this.onMonthClick,this);
		this.mon(this.monthPicker,"dblclick",this.onMonthDblClick,this);
		this.mpMonths=this.monthPicker.select("td.x-date-mp-month");
		this.mpYears=this.monthPicker.select("td.x-date-mp-year");
		this.mpMonths.each(function(c,d,e){
			e+=1;
			if((e%2)===0){
				c.dom.xmonth=5+Math.round(e*0.5)
				}else{
				c.dom.xmonth=Math.round((e-1)*0.5)
				}
			})
	}
},
showMonthPicker:function(){
	if(!this.disabled){
		this.createMonthPicker();
		var a=this.el.getSize();
		this.monthPicker.setSize(a);
		this.monthPicker.child("table").setSize(a);
		this.mpSelMonth=(this.activeDate||this.value).getMonth();
		this.updateMPMonth(this.mpSelMonth);
		this.mpSelYear=(this.activeDate||this.value).getFullYear();
		this.updateMPYear(this.mpSelYear);
		this.monthPicker.slideIn("t",{
			duration:0.2
		})
		}
	},
updateMPYear:function(e){
	this.mpyear=e;
	var c=this.mpYears.elements;
	for(var b=1;b<=10;b++){
		var d=c[b-1],a;
		if((b%2)===0){
			a=e+Math.round(b*0.5);
			d.firstChild.innerHTML=a;
			d.xyear=a
			}else{
			a=e-(5-Math.round(b*0.5));
			d.firstChild.innerHTML=a;
			d.xyear=a
			}
			this.mpYears.item(b-1)[a==this.mpSelYear?"addClass":"removeClass"]("x-date-mp-sel")
		}
	},
updateMPMonth:function(a){
	this.mpMonths.each(function(b,c,d){
		b[b.dom.xmonth==a?"addClass":"removeClass"]("x-date-mp-sel")
		})
	},
selectMPMonth:function(a){},
onMonthClick:function(g,b){
	g.stopEvent();
	var c=new Ext.Element(b),a;
	if(c.is("button.x-date-mp-cancel")){
		this.hideMonthPicker()
		}else{
		if(c.is("button.x-date-mp-ok")){
			var h=new Date(this.mpSelYear,this.mpSelMonth,(this.activeDate||this.value).getDate());
			if(h.getMonth()!=this.mpSelMonth){
				h=new Date(this.mpSelYear,this.mpSelMonth,1).getLastDateOfMonth()
				}
				this.update(h);
			this.hideMonthPicker()
			}else{
			if((a=c.up("td.x-date-mp-month",2))){
				this.mpMonths.removeClass("x-date-mp-sel");
				a.addClass("x-date-mp-sel");
				this.mpSelMonth=a.dom.xmonth
				}else{
				if((a=c.up("td.x-date-mp-year",2))){
					this.mpYears.removeClass("x-date-mp-sel");
					a.addClass("x-date-mp-sel");
					this.mpSelYear=a.dom.xyear
					}else{
					if(c.is("a.x-date-mp-prev")){
						this.updateMPYear(this.mpyear-10)
						}else{
						if(c.is("a.x-date-mp-next")){
							this.updateMPYear(this.mpyear+10)
							}
						}
				}
		}
}
}
},
onMonthDblClick:function(d,b){
	d.stopEvent();
	var c=new Ext.Element(b),a;
	if((a=c.up("td.x-date-mp-month",2))){
		this.update(new Date(this.mpSelYear,a.dom.xmonth,(this.activeDate||this.value).getDate()));
		this.hideMonthPicker()
		}else{
		if((a=c.up("td.x-date-mp-year",2))){
			this.update(new Date(a.dom.xyear,this.mpSelMonth,(this.activeDate||this.value).getDate()));
			this.hideMonthPicker()
			}
		}
},
hideMonthPicker:function(a){
	if(this.monthPicker){
		if(a===true){
			this.monthPicker.hide()
			}else{
			this.monthPicker.slideOut("t",{
				duration:0.2
			})
			}
		}
},
showPrevMonth:function(a){
	this.update(this.activeDate.add("mo",-1))
	},
showNextMonth:function(a){
	this.update(this.activeDate.add("mo",1))
	},
showPrevYear:function(){
	this.update(this.activeDate.add("y",-1))
	},
showNextYear:function(){
	this.update(this.activeDate.add("y",1))
	},
handleMouseWheel:function(a){
	a.stopEvent();
	if(!this.disabled){
		var b=a.getWheelDelta();
		if(b>0){
			this.showPrevMonth()
			}else{
			if(b<0){
				this.showNextMonth()
				}
			}
	}
},
handleDateClick:function(b,a){
	b.stopEvent();
	if(!this.disabled&&a.dateValue&&!Ext.fly(a.parentNode).hasClass("x-date-disabled")){
		this.cancelFocus=this.focusOnSelect===false;
		this.setValue(new Date(a.dateValue));
		delete this.cancelFocus;
		this.fireEvent("select",this,this.value)
		}
	},
selectToday:function(){
	if(this.todayBtn&&!this.todayBtn.disabled){
		this.setValue(new Date().clearTime());
		this.fireEvent("select",this,this.value)
		}
	},
update:function(H,B){
	if(this.rendered){
		var a=this.activeDate,q=this.isVisible();
		this.activeDate=H;
		if(!B&&a&&this.el){
			var p=H.getTime();
			if(a.getMonth()==H.getMonth()&&a.getFullYear()==H.getFullYear()){
				this.cells.removeClass("x-date-selected");
				this.cells.each(function(d){
					if(d.dom.firstChild.dateValue==p){
						d.addClass("x-date-selected");
						if(q&&!this.cancelFocus){
							Ext.fly(d.dom.firstChild).focus(50)
							}
							return false
						}
					},this);
			return
		}
	}
	var l=H.getDaysInMonth(),r=H.getFirstDateOfMonth(),g=r.getDay()-this.startDay;
if(g<0){
	g+=7
	}
	l+=g;
var C=H.add("mo",-1),h=C.getDaysInMonth()-g,e=this.cells.elements,s=this.textNodes,E=(new Date(C.getFullYear(),C.getMonth(),h,this.initHour)),D=new Date().clearTime().getTime(),x=H.clearTime(true).getTime(),v=this.minDate?this.minDate.clearTime(true):Number.NEGATIVE_INFINITY,z=this.maxDate?this.maxDate.clearTime(true):Number.POSITIVE_INFINITY,G=this.disabledDatesRE,u=this.disabledDatesText,J=this.disabledDays?this.disabledDays.join(""):false,F=this.disabledDaysText,A=this.format;
if(this.showToday){
	var n=new Date().clearTime(),c=(n<v||n>z||(G&&A&&G.test(n.dateFormat(A)))||(J&&J.indexOf(n.getDay())!=-1));
	if(!this.disabled){
		this.todayBtn.setDisabled(c);
		this.todayKeyListener[c?"disable":"enable"]()
		}
	}
var m=function(K,d){
	d.title="";
	var i=E.clearTime(true).getTime();
	d.firstChild.dateValue=i;
	if(i==D){
		d.className+=" x-date-today";
		d.title=K.todayText
		}
		if(i==x){
		d.className+=" x-date-selected";
		if(q){
			Ext.fly(d.firstChild).focus(50)
			}
		}
	if(i<v){
	d.className=" x-date-disabled";
	d.title=K.minText;
	return
}
if(i>z){
	d.className=" x-date-disabled";
	d.title=K.maxText;
	return
}
if(J){
	if(J.indexOf(E.getDay())!=-1){
		d.title=F;
		d.className=" x-date-disabled"
		}
	}
if(G&&A){
	var w=E.dateFormat(A);
	if(G.test(w)){
		d.title=u.replace("%0",w);
		d.className=" x-date-disabled"
		}
	}
};

var y=0;
for(;y<g;y++){
	s[y].innerHTML=(++h);
	E.setDate(E.getDate()+1);
	e[y].className="x-date-prevday";
	m(this,e[y])
	}
	for(;y<l;y++){
	var b=y-g+1;
	s[y].innerHTML=(b);
	E.setDate(E.getDate()+1);
	e[y].className="x-date-active";
	m(this,e[y])
	}
	var I=0;
for(;y<42;y++){
	s[y].innerHTML=(++I);
	E.setDate(E.getDate()+1);
	e[y].className="x-date-nextday";
	m(this,e[y])
	}
	this.mbtn.setText(this.monthNames[H.getMonth()]+" "+H.getFullYear());
if(!this.internalRender){
	var k=this.el.dom.firstChild,o=k.offsetWidth;
	this.el.setWidth(o+this.el.getBorderWidth("lr"));
	Ext.fly(k).setWidth(o);
	this.internalRender=true;
	if(Ext.isOpera&&!this.secondPass){
		k.rows[0].cells[1].style.width=(o-(k.rows[0].cells[0].offsetWidth+k.rows[0].cells[2].offsetWidth))+"px";
		this.secondPass=true;
		this.update.defer(10,this,[H])
		}
	}
}
},
beforeDestroy:function(){
	if(this.rendered){
		Ext.destroy(this.keyNav,this.monthPicker,this.eventEl,this.mbtn,this.nextRepeater,this.prevRepeater,this.cells.el,this.todayBtn);
		delete this.textNodes;
		delete this.cells.elements
		}
	}
});
Ext.reg("datepicker",Ext.DatePicker);
Ext.LoadMask=function(c,b){
	this.el=Ext.get(c);
	Ext.apply(this,b);
	if(this.store){
		this.store.on({
			scope:this,
			beforeload:this.onBeforeLoad,
			load:this.onLoad,
			exception:this.onLoad
			});
		this.removeMask=Ext.value(this.removeMask,false)
		}else{
		var a=this.el.getUpdater();
		a.showLoadIndicator=false;
		a.on({
			scope:this,
			beforeupdate:this.onBeforeLoad,
			update:this.onLoad,
			failure:this.onLoad
			});
		this.removeMask=Ext.value(this.removeMask,true)
		}
	};

Ext.LoadMask.prototype={
	msg:"Loading...",
	msgCls:"x-mask-loading",
	disabled:false,
	disable:function(){
		this.disabled=true
		},
	enable:function(){
		this.disabled=false
		},
	onLoad:function(){
		this.el.unmask(this.removeMask)
		},
	onBeforeLoad:function(){
		if(!this.disabled){
			this.el.mask(this.msg,this.msgCls)
			}
		},
show:function(){
	this.onBeforeLoad()
	},
hide:function(){
	this.onLoad()
	},
destroy:function(){
	if(this.store){
		this.store.un("beforeload",this.onBeforeLoad,this);
		this.store.un("load",this.onLoad,this);
		this.store.un("exception",this.onLoad,this)
		}else{
		var a=this.el.getUpdater();
		a.un("beforeupdate",this.onBeforeLoad,this);
		a.un("update",this.onLoad,this);
		a.un("failure",this.onLoad,this)
		}
	}
};

Ext.ns("Ext.slider");
Ext.slider.Thumb=Ext.extend(Object,{
	dragging:false,
	constructor:function(a){
		Ext.apply(this,a||{},{
			cls:"x-slider-thumb",
			constrain:false
		});
		Ext.slider.Thumb.superclass.constructor.call(this,a);
		if(this.slider.vertical){
			Ext.apply(this,Ext.slider.Thumb.Vertical)
			}
		},
render:function(){
	this.el=this.slider.innerEl.insertFirst({
		cls:this.cls
		});
	this.initEvents()
	},
enable:function(){
	this.disabled=false;
	this.el.removeClass(this.slider.disabledClass)
	},
disable:function(){
	this.disabled=true;
	this.el.addClass(this.slider.disabledClass)
	},
initEvents:function(){
	var a=this.el;
	a.addClassOnOver("x-slider-thumb-over");
	this.tracker=new Ext.dd.DragTracker({
		onBeforeStart:this.onBeforeDragStart.createDelegate(this),
		onStart:this.onDragStart.createDelegate(this),
		onDrag:this.onDrag.createDelegate(this),
		onEnd:this.onDragEnd.createDelegate(this),
		tolerance:3,
		autoStart:300
	});
	this.tracker.initEl(a)
	},
onBeforeDragStart:function(a){
	if(this.disabled){
		return false
		}else{
		this.slider.promoteThumb(this);
		return true
		}
	},
onDragStart:function(a){
	this.el.addClass("x-slider-thumb-drag");
	this.dragging=true;
	this.dragStartValue=this.value;
	this.slider.fireEvent("dragstart",this.slider,a,this)
	},
onDrag:function(g){
	var c=this.slider,b=this.index,d=this.getNewValue();
	if(this.constrain){
		var a=c.thumbs[b+1],h=c.thumbs[b-1];
		if(h!=undefined&&d<=h.value){
			d=h.value
			}
			if(a!=undefined&&d>=a.value){
			d=a.value
			}
		}
	c.setValue(b,d,false);
	c.fireEvent("drag",c,g,this)
	},
getNewValue:function(){
	var a=this.slider,b=a.innerEl.translatePoints(this.tracker.getXY());
	return Ext.util.Format.round(a.reverseValue(b.left),a.decimalPrecision)
	},
onDragEnd:function(c){
	var a=this.slider,b=this.value;
	this.el.removeClass("x-slider-thumb-drag");
	this.dragging=false;
	a.fireEvent("dragend",a,c);
	if(this.dragStartValue!=b){
		a.fireEvent("changecomplete",a,b,this)
		}
	},
destroy:function(){
	Ext.destroyMembers(this,"tracker","el")
	}
});
Ext.slider.MultiSlider=Ext.extend(Ext.BoxComponent,{
	vertical:false,
	minValue:0,
	maxValue:100,
	decimalPrecision:0,
	keyIncrement:1,
	increment:0,
	clickRange:[5,15],
	clickToChange:true,
	animate:true,
	constrainThumbs:true,
	topThumbZIndex:10000,
	initComponent:function(){
		if(!Ext.isDefined(this.value)){
			this.value=this.minValue
			}
			this.thumbs=[];
		Ext.slider.MultiSlider.superclass.initComponent.call(this);
		this.keyIncrement=Math.max(this.increment,this.keyIncrement);
		this.addEvents("beforechange","change","changecomplete","dragstart","drag","dragend");
		if(this.values==undefined||Ext.isEmpty(this.values)){
			this.values=[0]
			}
			var a=this.values;
		for(var b=0;b<a.length;b++){
			this.addThumb(a[b])
			}
			if(this.vertical){
			Ext.apply(this,Ext.slider.Vertical)
			}
		},
addThumb:function(b){
	var a=new Ext.slider.Thumb({
		value:b,
		slider:this,
		index:this.thumbs.length,
		constrain:this.constrainThumbs
		});
	this.thumbs.push(a);
	if(this.rendered){
		a.render()
		}
	},
promoteThumb:function(d){
	var a=this.thumbs,g,b;
	for(var e=0,c=a.length;e<c;e++){
		b=a[e];
		if(b==d){
			g=this.topThumbZIndex
			}else{
			g=""
			}
			b.el.setStyle("zIndex",g)
		}
	},
onRender:function(){
	this.autoEl={
		cls:"x-slider "+(this.vertical?"x-slider-vert":"x-slider-horz"),
		cn:{
			cls:"x-slider-end",
			cn:{
				cls:"x-slider-inner",
				cn:[{
					tag:"a",
					cls:"x-slider-focus",
					href:"#",
					tabIndex:"-1",
					hidefocus:"on"
				}]
				}
			}
	};

Ext.slider.MultiSlider.superclass.onRender.apply(this,arguments);
this.endEl=this.el.first();
this.innerEl=this.endEl.first();
this.focusEl=this.innerEl.child(".x-slider-focus");
for(var b=0;b<this.thumbs.length;b++){
	this.thumbs[b].render()
	}
	var a=this.innerEl.child(".x-slider-thumb");
this.halfThumb=(this.vertical?a.getHeight():a.getWidth())/2;
this.initEvents()
},
initEvents:function(){
	this.mon(this.el,{
		scope:this,
		mousedown:this.onMouseDown,
		keydown:this.onKeyDown
		});
	this.focusEl.swallowEvent("click",true)
	},
onMouseDown:function(d){
	if(this.disabled){
		return
	}
	var c=false;
	for(var b=0;b<this.thumbs.length;b++){
		c=c||d.target==this.thumbs[b].el.dom
		}
		if(this.clickToChange&&!c){
		var a=this.innerEl.translatePoints(d.getXY());
		this.onClickChange(a)
		}
		this.focus()
	},
onClickChange:function(c){
	if(c.top>this.clickRange[0]&&c.top<this.clickRange[1]){
		var a=this.getNearest(c,"left"),b=a.index;
		this.setValue(b,Ext.util.Format.round(this.reverseValue(c.left),this.decimalPrecision),undefined,true)
		}
	},
getNearest:function(l,b){
	var n=b=="top"?this.innerEl.getHeight()-l[b]:l[b],g=this.reverseValue(n),k=(this.maxValue-this.minValue)+5,e=0,c=null;
	for(var d=0;d<this.thumbs.length;d++){
		var a=this.thumbs[d],m=a.value,h=Math.abs(m-g);
		if(Math.abs(h<=k)){
			c=a;
			e=d;
			k=h
			}
		}
	return c
},
onKeyDown:function(b){
	if(this.disabled||this.thumbs.length!==1){
		b.preventDefault();
		return
	}
	var a=b.getKey(),c;
	switch(a){
		case b.UP:case b.RIGHT:
			b.stopEvent();
			c=b.ctrlKey?this.maxValue:this.getValue(0)+this.keyIncrement;
			this.setValue(0,c,undefined,true);
			break;
		case b.DOWN:case b.LEFT:
			b.stopEvent();
			c=b.ctrlKey?this.minValue:this.getValue(0)-this.keyIncrement;
			this.setValue(0,c,undefined,true);
			break;
		default:
			b.preventDefault()
			}
		},
doSnap:function(b){
	if(!(this.increment&&b)){
		return b
		}
		var d=b,c=this.increment,a=b%c;
	if(a!=0){
		d-=a;
		if(a*2>=c){
			d+=c
			}else{
			if(a*2<-c){
				d-=c
				}
			}
	}
return d.constrain(this.minValue,this.maxValue)
},
afterRender:function(){
	Ext.slider.MultiSlider.superclass.afterRender.apply(this,arguments);
	for(var c=0;c<this.thumbs.length;c++){
		var b=this.thumbs[c];
		if(b.value!==undefined){
			var a=this.normalizeValue(b.value);
			if(a!==b.value){
				this.setValue(c,a,false)
				}else{
				this.moveThumb(c,this.translateValue(a),false)
				}
			}
	}
},
getRatio:function(){
	var a=this.innerEl.getWidth(),b=this.maxValue-this.minValue;
	return b==0?a:(a/b)
	},
normalizeValue:function(a){
	a=this.doSnap(a);
	a=Ext.util.Format.round(a,this.decimalPrecision);
	a=a.constrain(this.minValue,this.maxValue);
	return a
	},
setMinValue:function(e){
	this.minValue=e;
	var d=0,b=this.thumbs,a=b.length,c;
	for(;d<a;++d){
		c=b[d];
		c.value=c.value<e?e:c.value
		}
		this.syncThumb()
	},
setMaxValue:function(e){
	this.maxValue=e;
	var d=0,b=this.thumbs,a=b.length,c;
	for(;d<a;++d){
		c=b[d];
		c.value=c.value>e?e:c.value
		}
		this.syncThumb()
	},
setValue:function(d,c,b,g){
	var a=this.thumbs[d],e=a.el;
	c=this.normalizeValue(c);
	if(c!==a.value&&this.fireEvent("beforechange",this,c,a.value,a)!==false){
		a.value=c;
		if(this.rendered){
			this.moveThumb(d,this.translateValue(c),b!==false);
			this.fireEvent("change",this,c,a);
			if(g){
				this.fireEvent("changecomplete",this,c,a)
				}
			}
	}
},
translateValue:function(a){
	var b=this.getRatio();
	return(a*b)-(this.minValue*b)-this.halfThumb
	},
reverseValue:function(b){
	var a=this.getRatio();
	return(b+(this.minValue*a))/a
	},
moveThumb:function(d,c,b){
	var a=this.thumbs[d].el;
	if(!b||this.animate===false){
		a.setLeft(c)
		}else{
		a.shift({
			left:c,
			stopFx:true,
			duration:0.35
		})
		}
	},
focus:function(){
	this.focusEl.focus(10)
	},
onResize:function(c,e){
	var b=this.thumbs,a=b.length,d=0;
	for(;d<a;++d){
		b[d].el.stopFx()
		}
		if(Ext.isNumber(c)){
		this.innerEl.setWidth(c-(this.el.getPadding("l")+this.endEl.getPadding("r")))
		}
		this.syncThumb();
	Ext.slider.MultiSlider.superclass.onResize.apply(this,arguments)
	},
onDisable:function(){
	Ext.slider.MultiSlider.superclass.onDisable.call(this);
	for(var b=0;b<this.thumbs.length;b++){
		var a=this.thumbs[b],c=a.el;
		a.disable();
		if(Ext.isIE){
			var d=c.getXY();
			c.hide();
			this.innerEl.addClass(this.disabledClass).dom.disabled=true;
			if(!this.thumbHolder){
				this.thumbHolder=this.endEl.createChild({
					cls:"x-slider-thumb "+this.disabledClass
					})
				}
				this.thumbHolder.show().setXY(d)
			}
		}
	},
onEnable:function(){
	Ext.slider.MultiSlider.superclass.onEnable.call(this);
	for(var b=0;b<this.thumbs.length;b++){
		var a=this.thumbs[b],c=a.el;
		a.enable();
		if(Ext.isIE){
			this.innerEl.removeClass(this.disabledClass).dom.disabled=false;
			if(this.thumbHolder){
				this.thumbHolder.hide()
				}
				c.show();
			this.syncThumb()
			}
		}
	},
syncThumb:function(){
	if(this.rendered){
		for(var a=0;a<this.thumbs.length;a++){
			this.moveThumb(a,this.translateValue(this.thumbs[a].value))
			}
		}
	},
getValue:function(a){
	return this.thumbs[a].value
	},
getValues:function(){
	var a=[];
	for(var b=0;b<this.thumbs.length;b++){
		a.push(this.thumbs[b].value)
		}
		return a
	},
beforeDestroy:function(){
	var b=this.thumbs;
	for(var c=0,a=b.length;c<a;++c){
		b[c].destroy();
		b[c]=null
		}
		Ext.destroyMembers(this,"endEl","innerEl","focusEl","thumbHolder");
	Ext.slider.MultiSlider.superclass.beforeDestroy.call(this)
	}
});
Ext.reg("multislider",Ext.slider.MultiSlider);
Ext.slider.SingleSlider=Ext.extend(Ext.slider.MultiSlider,{
	constructor:function(a){
		a=a||{};

		Ext.applyIf(a,{
			values:[a.value||0]
			});
		Ext.slider.SingleSlider.superclass.constructor.call(this,a)
		},
	getValue:function(){
		return Ext.slider.SingleSlider.superclass.getValue.call(this,0)
		},
	setValue:function(d,b){
		var c=Ext.toArray(arguments),a=c.length;
		if(a==1||(a<=3&&typeof arguments[1]!="number")){
			c.unshift(0)
			}
			return Ext.slider.SingleSlider.superclass.setValue.apply(this,c)
		},
	syncThumb:function(){
		return Ext.slider.SingleSlider.superclass.syncThumb.apply(this,[0].concat(arguments))
		},
	getNearest:function(){
		return this.thumbs[0]
		}
	});
Ext.Slider=Ext.slider.SingleSlider;
Ext.reg("slider",Ext.slider.SingleSlider);
Ext.slider.Vertical={
	onResize:function(a,b){
		this.innerEl.setHeight(b-(this.el.getPadding("t")+this.endEl.getPadding("b")));
		this.syncThumb()
		},
	getRatio:function(){
		var b=this.innerEl.getHeight(),a=this.maxValue-this.minValue;
		return b/a
		},
	moveThumb:function(d,c,b){
		var a=this.thumbs[d],e=a.el;
		if(!b||this.animate===false){
			e.setBottom(c)
			}else{
			e.shift({
				bottom:c,
				stopFx:true,
				duration:0.35
			})
			}
		},
onClickChange:function(c){
	if(c.left>this.clickRange[0]&&c.left<this.clickRange[1]){
		var a=this.getNearest(c,"top"),b=a.index,d=this.minValue+this.reverseValue(this.innerEl.getHeight()-c.top);
		this.setValue(b,Ext.util.Format.round(d,this.decimalPrecision),undefined,true)
		}
	}
};

Ext.slider.Thumb.Vertical={
	getNewValue:function(){
		var b=this.slider,c=b.innerEl,d=c.translatePoints(this.tracker.getXY()),a=c.getHeight()-d.top;
		return b.minValue+Ext.util.Format.round(a/b.getRatio(),b.decimalPrecision)
		}
	};

Ext.ProgressBar=Ext.extend(Ext.BoxComponent,{
	baseCls:"x-progress",
	animate:false,
	waitTimer:null,
	initComponent:function(){
		Ext.ProgressBar.superclass.initComponent.call(this);
		this.addEvents("update")
		},
	onRender:function(d,a){
		var c=new Ext.Template('<div class="{cls}-wrap">','<div class="{cls}-inner">','<div class="{cls}-bar">','<div class="{cls}-text">',"<div>&#160;</div>","</div>","</div>",'<div class="{cls}-text {cls}-text-back">',"<div>&#160;</div>","</div>","</div>","</div>");
		this.el=a?c.insertBefore(a,{
			cls:this.baseCls
			},true):c.append(d,{
			cls:this.baseCls
			},true);
		if(this.id){
			this.el.dom.id=this.id
			}
			var b=this.el.dom.firstChild;
		this.progressBar=Ext.get(b.firstChild);
		if(this.textEl){
			this.textEl=Ext.get(this.textEl);
			delete this.textTopEl
			}else{
			this.textTopEl=Ext.get(this.progressBar.dom.firstChild);
			var e=Ext.get(b.childNodes[1]);
			this.textTopEl.setStyle("z-index",99).addClass("x-hidden");
			this.textEl=new Ext.CompositeElement([this.textTopEl.dom.firstChild,e.dom.firstChild]);
			this.textEl.setWidth(b.offsetWidth)
			}
			this.progressBar.setHeight(b.offsetHeight)
		},
	afterRender:function(){
		Ext.ProgressBar.superclass.afterRender.call(this);
		if(this.value){
			this.updateProgress(this.value,this.text)
			}else{
			this.updateText(this.text)
			}
		},
updateProgress:function(c,d,b){
	this.value=c||0;
	if(d){
		this.updateText(d)
		}
		if(this.rendered&&!this.isDestroyed){
		var a=Math.floor(c*this.el.dom.firstChild.offsetWidth);
		this.progressBar.setWidth(a,b===true||(b!==false&&this.animate));
		if(this.textTopEl){
			this.textTopEl.removeClass("x-hidden").setWidth(a)
			}
		}
	this.fireEvent("update",this,c,d);
	return this
	},
wait:function(b){
	if(!this.waitTimer){
		var a=this;
		b=b||{};

		this.updateText(b.text);
		this.waitTimer=Ext.TaskMgr.start({
			run:function(c){
				var d=b.increment||10;
				c-=1;
				this.updateProgress(((((c+d)%d)+1)*(100/d))*0.01,null,b.animate)
				},
			interval:b.interval||1000,
			duration:b.duration,
			onStop:function(){
				if(b.fn){
					b.fn.apply(b.scope||this)
					}
					this.reset()
				},
			scope:a
		})
		}
		return this
	},
isWaiting:function(){
	return this.waitTimer!==null
	},
updateText:function(a){
	this.text=a||"&#160;";
	if(this.rendered){
		this.textEl.update(this.text)
		}
		return this
	},
syncProgressBar:function(){
	if(this.value){
		this.updateProgress(this.value,this.text)
		}
		return this
	},
setSize:function(a,c){
	Ext.ProgressBar.superclass.setSize.call(this,a,c);
	if(this.textTopEl){
		var b=this.el.dom.firstChild;
		this.textEl.setSize(b.offsetWidth,b.offsetHeight)
		}
		this.syncProgressBar();
	return this
	},
reset:function(a){
	this.updateProgress(0);
	if(this.textTopEl){
		this.textTopEl.addClass("x-hidden")
		}
		this.clearTimer();
	if(a===true){
		this.hide()
		}
		return this
	},
clearTimer:function(){
	if(this.waitTimer){
		this.waitTimer.onStop=null;
		Ext.TaskMgr.stop(this.waitTimer);
		this.waitTimer=null
		}
	},
onDestroy:function(){
	this.clearTimer();
	if(this.rendered){
		if(this.textEl.isComposite){
			this.textEl.clear()
			}
			Ext.destroyMembers(this,"textEl","progressBar","textTopEl")
		}
		Ext.ProgressBar.superclass.onDestroy.call(this)
	}
});
Ext.reg("progress",Ext.ProgressBar);
(function(){
	var a=Ext.EventManager;
	var b=Ext.lib.Dom;
	Ext.dd.DragDrop=function(e,c,d){
		if(e){
			this.init(e,c,d)
			}
		};

Ext.dd.DragDrop.prototype={
	id:null,
	config:null,
	dragElId:null,
	handleElId:null,
	invalidHandleTypes:null,
	invalidHandleIds:null,
	invalidHandleClasses:null,
	startPageX:0,
	startPageY:0,
	groups:null,
	locked:false,
	lock:function(){
		this.locked=true
		},
	moveOnly:false,
	unlock:function(){
		this.locked=false
		},
	isTarget:true,
	padding:null,
	_domRef:null,
	__ygDragDrop:true,
	constrainX:false,
	constrainY:false,
	minX:0,
	maxX:0,
	minY:0,
	maxY:0,
	maintainOffset:false,
	xTicks:null,
	yTicks:null,
	primaryButtonOnly:true,
	available:false,
	hasOuterHandles:false,
	b4StartDrag:function(c,d){},
	startDrag:function(c,d){},
	b4Drag:function(c){},
	onDrag:function(c){},
	onDragEnter:function(c,d){},
	b4DragOver:function(c){},
	onDragOver:function(c,d){},
	b4DragOut:function(c){},
	onDragOut:function(c,d){},
	b4DragDrop:function(c){},
	onDragDrop:function(c,d){},
	onInvalidDrop:function(c){},
	b4EndDrag:function(c){},
	endDrag:function(c){},
	b4MouseDown:function(c){},
	onMouseDown:function(c){},
	onMouseUp:function(c){},
	onAvailable:function(){},
	defaultPadding:{
		left:0,
		right:0,
		top:0,
		bottom:0
	},
	constrainTo:function(k,h,p){
		if(Ext.isNumber(h)){
			h={
				left:h,
				right:h,
				top:h,
				bottom:h
			}
		}
		h=h||this.defaultPadding;
	var m=Ext.get(this.getEl()).getBox(),d=Ext.get(k),o=d.getScroll(),l,e=d.dom;
	if(e==document.body){
		l={
			x:o.left,
			y:o.top,
			width:Ext.lib.Dom.getViewWidth(),
			height:Ext.lib.Dom.getViewHeight()
			}
		}else{
	var n=d.getXY();
	l={
		x:n[0],
		y:n[1],
		width:e.clientWidth,
		height:e.clientHeight
		}
	}
var i=m.y-l.y,g=m.x-l.x;
this.resetConstraints();
	this.setXConstraint(g-(h.left||0),l.width-g-m.width-(h.right||0),this.xTickSize);
	this.setYConstraint(i-(h.top||0),l.height-i-m.height-(h.bottom||0),this.yTickSize)
	},
getEl:function(){
	if(!this._domRef){
		this._domRef=Ext.getDom(this.id)
		}
		return this._domRef
	},
getDragEl:function(){
	return Ext.getDom(this.dragElId)
	},
init:function(e,c,d){
	this.initTarget(e,c,d);
	a.on(this.id,"mousedown",this.handleMouseDown,this)
	},
initTarget:function(e,c,d){
	this.config=d||{};

	this.DDM=Ext.dd.DDM;
	this.groups={};

	if(typeof e!=="string"){
		e=Ext.id(e)
		}
		this.id=e;
	this.addToGroup((c)?c:"default");
	this.handleElId=e;
	this.setDragElId(e);
	this.invalidHandleTypes={
		A:"A"
	};

	this.invalidHandleIds={};

	this.invalidHandleClasses=[];
	this.applyConfig();
	this.handleOnAvailable()
	},
applyConfig:function(){
	this.padding=this.config.padding||[0,0,0,0];
	this.isTarget=(this.config.isTarget!==false);
	this.maintainOffset=(this.config.maintainOffset);
	this.primaryButtonOnly=(this.config.primaryButtonOnly!==false)
	},
handleOnAvailable:function(){
	this.available=true;
	this.resetConstraints();
	this.onAvailable()
	},
setPadding:function(e,c,g,d){
	if(!c&&0!==c){
		this.padding=[e,e,e,e]
		}else{
		if(!g&&0!==g){
			this.padding=[e,c,e,c]
			}else{
			this.padding=[e,c,g,d]
			}
		}
},
setInitPosition:function(g,e){
	var h=this.getEl();
	if(!this.DDM.verifyEl(h)){
		return
	}
	var d=g||0;
	var c=e||0;
	var i=b.getXY(h);
	this.initPageX=i[0]-d;
	this.initPageY=i[1]-c;
	this.lastPageX=i[0];
	this.lastPageY=i[1];
	this.setStartPosition(i)
	},
setStartPosition:function(d){
	var c=d||b.getXY(this.getEl());
	this.deltaSetXY=null;
	this.startPageX=c[0];
	this.startPageY=c[1]
	},
addToGroup:function(c){
	this.groups[c]=true;
	this.DDM.regDragDrop(this,c)
	},
removeFromGroup:function(c){
	if(this.groups[c]){
		delete this.groups[c]
	}
	this.DDM.removeDDFromGroup(this,c)
	},
setDragElId:function(c){
	this.dragElId=c
	},
setHandleElId:function(c){
	if(typeof c!=="string"){
		c=Ext.id(c)
		}
		this.handleElId=c;
	this.DDM.regHandle(this.id,c)
	},
setOuterHandleElId:function(c){
	if(typeof c!=="string"){
		c=Ext.id(c)
		}
		a.on(c,"mousedown",this.handleMouseDown,this);
	this.setHandleElId(c);
	this.hasOuterHandles=true
	},
unreg:function(){
	a.un(this.id,"mousedown",this.handleMouseDown);
	this._domRef=null;
	this.DDM._remove(this)
	},
destroy:function(){
	this.unreg()
	},
isLocked:function(){
	return(this.DDM.isLocked()||this.locked)
	},
handleMouseDown:function(g,d){
	if(this.primaryButtonOnly&&g.button!=0){
		return
	}
	if(this.isLocked()){
		return
	}
	this.DDM.refreshCache(this.groups);
	var c=new Ext.lib.Point(Ext.lib.Event.getPageX(g),Ext.lib.Event.getPageY(g));
	if(!this.hasOuterHandles&&!this.DDM.isOverTarget(c,this)){}else{
		if(this.clickValidator(g)){
			this.setStartPosition();
			this.b4MouseDown(g);
			this.onMouseDown(g);
			this.DDM.handleMouseDown(g,this);
			this.DDM.stopEvent(g)
			}else{}
}
},
clickValidator:function(d){
	var c=d.getTarget();
	return(this.isValidHandleChild(c)&&(this.id==this.handleElId||this.DDM.handleWasClicked(c,this.id)))
	},
addInvalidHandleType:function(c){
	var d=c.toUpperCase();
	this.invalidHandleTypes[d]=d
	},
addInvalidHandleId:function(c){
	if(typeof c!=="string"){
		c=Ext.id(c)
		}
		this.invalidHandleIds[c]=c
	},
addInvalidHandleClass:function(c){
	this.invalidHandleClasses.push(c)
	},
removeInvalidHandleType:function(c){
	var d=c.toUpperCase();
	delete this.invalidHandleTypes[d]
},
removeInvalidHandleId:function(c){
	if(typeof c!=="string"){
		c=Ext.id(c)
		}
		delete this.invalidHandleIds[c]
},
removeInvalidHandleClass:function(d){
	for(var e=0,c=this.invalidHandleClasses.length;e<c;++e){
		if(this.invalidHandleClasses[e]==d){
			delete this.invalidHandleClasses[e]
		}
	}
	},
isValidHandleChild:function(h){
	var g=true;
	var l;
	try{
		l=h.nodeName.toUpperCase()
		}catch(k){
		l=h.nodeName
		}
		g=g&&!this.invalidHandleTypes[l];
	g=g&&!this.invalidHandleIds[h.id];
	for(var d=0,c=this.invalidHandleClasses.length;g&&d<c;++d){
		g=!Ext.fly(h).hasClass(this.invalidHandleClasses[d])
		}
		return g
	},
setXTicks:function(g,c){
	this.xTicks=[];
	this.xTickSize=c;
	var e={};

	for(var d=this.initPageX;d>=this.minX;d=d-c){
		if(!e[d]){
			this.xTicks[this.xTicks.length]=d;
			e[d]=true
			}
		}
	for(d=this.initPageX;d<=this.maxX;d=d+c){
	if(!e[d]){
		this.xTicks[this.xTicks.length]=d;
		e[d]=true
		}
	}
this.xTicks.sort(this.DDM.numericSort)
},
setYTicks:function(g,c){
	this.yTicks=[];
	this.yTickSize=c;
	var e={};

	for(var d=this.initPageY;d>=this.minY;d=d-c){
		if(!e[d]){
			this.yTicks[this.yTicks.length]=d;
			e[d]=true
			}
		}
	for(d=this.initPageY;d<=this.maxY;d=d+c){
	if(!e[d]){
		this.yTicks[this.yTicks.length]=d;
		e[d]=true
		}
	}
this.yTicks.sort(this.DDM.numericSort)
},
setXConstraint:function(e,d,c){
	this.leftConstraint=e;
	this.rightConstraint=d;
	this.minX=this.initPageX-e;
	this.maxX=this.initPageX+d;
	if(c){
		this.setXTicks(this.initPageX,c)
		}
		this.constrainX=true
	},
clearConstraints:function(){
	this.constrainX=false;
	this.constrainY=false;
	this.clearTicks()
	},
clearTicks:function(){
	this.xTicks=null;
	this.yTicks=null;
	this.xTickSize=0;
	this.yTickSize=0
	},
setYConstraint:function(c,e,d){
	this.topConstraint=c;
	this.bottomConstraint=e;
	this.minY=this.initPageY-c;
	this.maxY=this.initPageY+e;
	if(d){
		this.setYTicks(this.initPageY,d)
		}
		this.constrainY=true
	},
resetConstraints:function(){
	if(this.initPageX||this.initPageX===0){
		var d=(this.maintainOffset)?this.lastPageX-this.initPageX:0;
		var c=(this.maintainOffset)?this.lastPageY-this.initPageY:0;
		this.setInitPosition(d,c)
		}else{
		this.setInitPosition()
		}
		if(this.constrainX){
		this.setXConstraint(this.leftConstraint,this.rightConstraint,this.xTickSize)
		}
		if(this.constrainY){
		this.setYConstraint(this.topConstraint,this.bottomConstraint,this.yTickSize)
		}
	},
getTick:function(l,g){
	if(!g){
		return l
		}else{
		if(g[0]>=l){
			return g[0]
			}else{
			for(var d=0,c=g.length;d<c;++d){
				var e=d+1;
				if(g[e]&&g[e]>=l){
					var k=l-g[d];
					var h=g[e]-l;
					return(h>k)?g[d]:g[e]
					}
				}
			return g[g.length-1]
		}
	}
},
toString:function(){
	return("DragDrop "+this.id)
	}
}
})();
if(!Ext.dd.DragDropMgr){
	Ext.dd.DragDropMgr=function(){
		var a=Ext.EventManager;
		return{
			ids:{},
			handleIds:{},
			dragCurrent:null,
			dragOvers:{},
			deltaX:0,
			deltaY:0,
			preventDefault:true,
			stopPropagation:true,
			initialized:false,
			locked:false,
			init:function(){
				this.initialized=true
				},
			POINT:0,
			INTERSECT:1,
			mode:0,
			_execOnAll:function(d,c){
				for(var e in this.ids){
					for(var b in this.ids[e]){
						var g=this.ids[e][b];
						if(!this.isTypeOfDD(g)){
							continue
						}
						g[d].apply(g,c)
						}
					}
					},
	_onLoad:function(){
		this.init();
		a.on(document,"mouseup",this.handleMouseUp,this,true);
		a.on(document,"mousemove",this.handleMouseMove,this,true);
		a.on(window,"unload",this._onUnload,this,true);
		a.on(window,"resize",this._onResize,this,true)
		},
	_onResize:function(b){
		this._execOnAll("resetConstraints",[])
		},
	lock:function(){
		this.locked=true
		},
	unlock:function(){
		this.locked=false
		},
	isLocked:function(){
		return this.locked
		},
	locationCache:{},
	useCache:true,
	clickPixelThresh:3,
	clickTimeThresh:350,
	dragThreshMet:false,
	clickTimeout:null,
	startX:0,
	startY:0,
	regDragDrop:function(c,b){
		if(!this.initialized){
			this.init()
			}
			if(!this.ids[b]){
			this.ids[b]={}
		}
		this.ids[b][c.id]=c
	},
	removeDDFromGroup:function(d,b){
		if(!this.ids[b]){
			this.ids[b]={}
		}
		var c=this.ids[b];
	if(c&&c[d.id]){
		delete c[d.id]
	}
},
_remove:function(c){
	for(var b in c.groups){
		if(b&&this.ids[b]&&this.ids[b][c.id]){
			delete this.ids[b][c.id]
		}
	}
	delete this.handleIds[c.id]
},
regHandle:function(c,b){
	if(!this.handleIds[c]){
		this.handleIds[c]={}
	}
	this.handleIds[c][b]=b
},
isDragDrop:function(b){
	return(this.getDDById(b))?true:false
	},
getRelated:function(h,c){
	var g=[];
	for(var e in h.groups){
		for(var d in this.ids[e]){
			var b=this.ids[e][d];
			if(!this.isTypeOfDD(b)){
				continue
			}
			if(!c||b.isTarget){
				g[g.length]=b
				}
			}
		}
		return g
},
isLegalTarget:function(g,e){
	var c=this.getRelated(g,true);
	for(var d=0,b=c.length;d<b;++d){
		if(c[d].id==e.id){
			return true
			}
		}
	return false
},
isTypeOfDD:function(b){
	return(b&&b.__ygDragDrop)
	},
isHandle:function(c,b){
	return(this.handleIds[c]&&this.handleIds[c][b])
	},
getDDById:function(c){
	for(var b in this.ids){
		if(this.ids[b][c]){
			return this.ids[b][c]
			}
		}
	return null
},
handleMouseDown:function(d,c){
	if(Ext.QuickTips){
		Ext.QuickTips.ddDisable()
		}
		if(this.dragCurrent){
		this.handleMouseUp(d)
		}
		this.currentTarget=d.getTarget();
	this.dragCurrent=c;
	var b=c.getEl();
	this.startX=d.getPageX();
	this.startY=d.getPageY();
	this.deltaX=this.startX-b.offsetLeft;
	this.deltaY=this.startY-b.offsetTop;
	this.dragThreshMet=false;
	this.clickTimeout=setTimeout(function(){
		var e=Ext.dd.DDM;
		e.startDrag(e.startX,e.startY)
		},this.clickTimeThresh)
	},
startDrag:function(b,c){
	clearTimeout(this.clickTimeout);
	if(this.dragCurrent){
		this.dragCurrent.b4StartDrag(b,c);
		this.dragCurrent.startDrag(b,c)
		}
		this.dragThreshMet=true
	},
handleMouseUp:function(b){
	if(Ext.QuickTips){
		Ext.QuickTips.ddEnable()
		}
		if(!this.dragCurrent){
		return
	}
	clearTimeout(this.clickTimeout);
	if(this.dragThreshMet){
		this.fireEvents(b,true)
		}else{}
	this.stopDrag(b);
	this.stopEvent(b)
	},
stopEvent:function(b){
	if(this.stopPropagation){
		b.stopPropagation()
		}
		if(this.preventDefault){
		b.preventDefault()
		}
	},
stopDrag:function(b){
	if(this.dragCurrent){
		if(this.dragThreshMet){
			this.dragCurrent.b4EndDrag(b);
			this.dragCurrent.endDrag(b)
			}
			this.dragCurrent.onMouseUp(b)
		}
		this.dragCurrent=null;
	this.dragOvers={}
},
handleMouseMove:function(d){
	if(!this.dragCurrent){
		return true
		}
		if(Ext.isIE&&(d.button!==0&&d.button!==1&&d.button!==2)){
		this.stopEvent(d);
		return this.handleMouseUp(d)
		}
		if(!this.dragThreshMet){
		var c=Math.abs(this.startX-d.getPageX());
		var b=Math.abs(this.startY-d.getPageY());
		if(c>this.clickPixelThresh||b>this.clickPixelThresh){
			this.startDrag(this.startX,this.startY)
			}
		}
	if(this.dragThreshMet){
	this.dragCurrent.b4Drag(d);
	this.dragCurrent.onDrag(d);
	if(!this.dragCurrent.moveOnly){
		this.fireEvents(d,false)
		}
	}
this.stopEvent(d);
return true
},
fireEvents:function(o,p){
	var r=this.dragCurrent;
	if(!r||r.isLocked()){
		return
	}
	var s=o.getPoint();
	var b=[];
	var g=[];
	var m=[];
	var k=[];
	var d=[];
	for(var h in this.dragOvers){
		var c=this.dragOvers[h];
		if(!this.isTypeOfDD(c)){
			continue
		}
		if(!this.isOverTarget(s,c,this.mode)){
			g.push(c)
			}
			b[h]=true;
		delete this.dragOvers[h]
	}
	for(var q in r.groups){
		if("string"!=typeof q){
			continue
		}
		for(h in this.ids[q]){
			var l=this.ids[q][h];
			if(!this.isTypeOfDD(l)){
				continue
			}
			if(l.isTarget&&!l.isLocked()&&((l!=r)||(r.ignoreSelf===false))){
				if(this.isOverTarget(s,l,this.mode)){
					if(p){
						k.push(l)
						}else{
						if(!b[l.id]){
							d.push(l)
							}else{
							m.push(l)
							}
							this.dragOvers[l.id]=l
						}
					}
			}
		}
	}
	if(this.mode){
	if(g.length){
		r.b4DragOut(o,g);
		r.onDragOut(o,g)
		}
		if(d.length){
		r.onDragEnter(o,d)
		}
		if(m.length){
		r.b4DragOver(o,m);
		r.onDragOver(o,m)
		}
		if(k.length){
		r.b4DragDrop(o,k);
		r.onDragDrop(o,k)
		}
	}else{
	var n=0;
	for(h=0,n=g.length;h<n;++h){
		r.b4DragOut(o,g[h].id);
		r.onDragOut(o,g[h].id)
		}
		for(h=0,n=d.length;h<n;++h){
		r.onDragEnter(o,d[h].id)
		}
		for(h=0,n=m.length;h<n;++h){
		r.b4DragOver(o,m[h].id);
		r.onDragOver(o,m[h].id)
		}
		for(h=0,n=k.length;h<n;++h){
		r.b4DragDrop(o,k[h].id);
		r.onDragDrop(o,k[h].id)
		}
	}
	if(p&&!k.length){
	r.onInvalidDrop(o)
	}
},
getBestMatch:function(d){
	var g=null;
	var c=d.length;
	if(c==1){
		g=d[0]
		}else{
		for(var e=0;e<c;++e){
			var b=d[e];
			if(b.cursorIsOver){
				g=b;
				break
			}else{
				if(!g||g.overlap.getArea()<b.overlap.getArea()){
					g=b
					}
				}
		}
	}
return g
},
refreshCache:function(c){
	for(var b in c){
		if("string"!=typeof b){
			continue
		}
		for(var d in this.ids[b]){
			var e=this.ids[b][d];
			if(this.isTypeOfDD(e)){
				var g=this.getLocation(e);
				if(g){
					this.locationCache[e.id]=g
					}else{
					delete this.locationCache[e.id]
				}
			}
		}
		}
	},
verifyEl:function(c){
	if(c){
		var b;
		if(Ext.isIE){
			try{
				b=c.offsetParent
				}catch(d){}
		}else{
		b=c.offsetParent
		}
		if(b){
		return true
		}
	}
return false
},
getLocation:function(k){
	if(!this.isTypeOfDD(k)){
		return null
		}
		var h=k.getEl(),o,g,d,q,p,s,c,n,i;
	try{
		o=Ext.lib.Dom.getXY(h)
		}catch(m){}
	if(!o){
		return null
		}
		g=o[0];
	d=g+h.offsetWidth;
	q=o[1];
	p=q+h.offsetHeight;
	s=q-k.padding[0];
	c=d+k.padding[1];
	n=p+k.padding[2];
	i=g-k.padding[3];
	return new Ext.lib.Region(s,c,n,i)
	},
isOverTarget:function(l,b,d){
	var g=this.locationCache[b.id];
	if(!g||!this.useCache){
		g=this.getLocation(b);
		this.locationCache[b.id]=g
		}
		if(!g){
		return false
		}
		b.cursorIsOver=g.contains(l);
	var k=this.dragCurrent;
	if(!k||!k.getTargetCoord||(!d&&!k.constrainX&&!k.constrainY)){
		return b.cursorIsOver
		}
		b.overlap=null;
	var h=k.getTargetCoord(l.x,l.y);
	var c=k.getDragEl();
	var e=new Ext.lib.Region(h.y,h.x+c.offsetWidth,h.y+c.offsetHeight,h.x);
	var i=e.intersect(g);
	if(i){
		b.overlap=i;
		return(d)?true:b.cursorIsOver
		}else{
		return false
		}
	},
_onUnload:function(c,b){
	Ext.dd.DragDropMgr.unregAll()
	},
unregAll:function(){
	if(this.dragCurrent){
		this.stopDrag();
		this.dragCurrent=null
		}
		this._execOnAll("unreg",[]);
	for(var b in this.elementCache){
		delete this.elementCache[b]
	}
	this.elementCache={};

	this.ids={}
},
elementCache:{},
getElWrapper:function(c){
	var b=this.elementCache[c];
	if(!b||!b.el){
		b=this.elementCache[c]=new this.ElementWrapper(Ext.getDom(c))
		}
		return b
	},
getElement:function(b){
	return Ext.getDom(b)
	},
getCss:function(c){
	var b=Ext.getDom(c);
	return(b)?b.style:null
	},
ElementWrapper:function(b){
	this.el=b||null;
	this.id=this.el&&b.id;
	this.css=this.el&&b.style
	},
getPosX:function(b){
	return Ext.lib.Dom.getX(b)
	},
getPosY:function(b){
	return Ext.lib.Dom.getY(b)
	},
swapNode:function(d,b){
	if(d.swapNode){
		d.swapNode(b)
		}else{
		var e=b.parentNode;
		var c=b.nextSibling;
		if(c==d){
			e.insertBefore(d,b)
			}else{
			if(b==d.nextSibling){
				e.insertBefore(b,d)
				}else{
				d.parentNode.replaceChild(b,d);
				e.insertBefore(d,c)
				}
			}
	}
},
getScroll:function(){
	var d,b,e=document.documentElement,c=document.body;
	if(e&&(e.scrollTop||e.scrollLeft)){
		d=e.scrollTop;
		b=e.scrollLeft
		}else{
		if(c){
			d=c.scrollTop;
			b=c.scrollLeft
			}else{}
}
return{
	top:d,
	left:b
}
},
getStyle:function(c,b){
	return Ext.fly(c).getStyle(b)
	},
getScrollTop:function(){
	return this.getScroll().top
	},
getScrollLeft:function(){
	return this.getScroll().left
	},
moveToEl:function(b,d){
	var c=Ext.lib.Dom.getXY(d);
	Ext.lib.Dom.setXY(b,c)
	},
numericSort:function(d,c){
	return(d-c)
	},
_timeoutCount:0,
_addListeners:function(){
	var b=Ext.dd.DDM;
	if(Ext.lib.Event&&document){
		b._onLoad()
		}else{
		if(b._timeoutCount>2000){}else{
			setTimeout(b._addListeners,10);
			if(document&&document.body){
				b._timeoutCount+=1
				}
			}
	}
},
handleWasClicked:function(b,d){
	if(this.isHandle(d,b.id)){
		return true
		}else{
		var c=b.parentNode;
		while(c){
			if(this.isHandle(d,c.id)){
				return true
				}else{
				c=c.parentNode
				}
			}
	}
return false
}
}
}();
Ext.dd.DDM=Ext.dd.DragDropMgr;
Ext.dd.DDM._addListeners()
	}
	Ext.dd.DD=function(c,a,b){
	if(c){
		this.init(c,a,b)
		}
	};

Ext.extend(Ext.dd.DD,Ext.dd.DragDrop,{
	scroll:true,
	autoOffset:function(c,b){
		var a=c-this.startPageX;
		var d=b-this.startPageY;
		this.setDelta(a,d)
		},
	setDelta:function(b,a){
		this.deltaX=b;
		this.deltaY=a
		},
	setDragElPos:function(c,b){
		var a=this.getDragEl();
		this.alignElWithMouse(a,c,b)
		},
	alignElWithMouse:function(c,h,g){
		var e=this.getTargetCoord(h,g);
		var b=c.dom?c:Ext.fly(c,"_dd");
		if(!this.deltaSetXY){
			var i=[e.x,e.y];
			b.setXY(i);
			var d=b.getLeft(true);
			var a=b.getTop(true);
			this.deltaSetXY=[d-e.x,a-e.y]
			}else{
			b.setLeftTop(e.x+this.deltaSetXY[0],e.y+this.deltaSetXY[1])
			}
			this.cachePosition(e.x,e.y);
		this.autoScroll(e.x,e.y,c.offsetHeight,c.offsetWidth);
		return e
		},
	cachePosition:function(b,a){
		if(b){
			this.lastPageX=b;
			this.lastPageY=a
			}else{
			var c=Ext.lib.Dom.getXY(this.getEl());
			this.lastPageX=c[0];
			this.lastPageY=c[1]
			}
		},
autoScroll:function(m,l,e,n){
	if(this.scroll){
		var o=Ext.lib.Dom.getViewHeight();
		var b=Ext.lib.Dom.getViewWidth();
		var q=this.DDM.getScrollTop();
		var d=this.DDM.getScrollLeft();
		var k=e+l;
		var p=n+m;
		var i=(o+q-l-this.deltaY);
		var g=(b+d-m-this.deltaX);
		var c=40;
		var a=(document.all)?80:30;
		if(k>o&&i<c){
			window.scrollTo(d,q+a)
			}
			if(l<q&&q>0&&l-q<c){
			window.scrollTo(d,q-a)
			}
			if(p>b&&g<c){
			window.scrollTo(d+a,q)
			}
			if(m<d&&d>0&&m-d<c){
			window.scrollTo(d-a,q)
			}
		}
},
getTargetCoord:function(c,b){
	var a=c-this.deltaX;
	var d=b-this.deltaY;
	if(this.constrainX){
		if(a<this.minX){
			a=this.minX
			}
			if(a>this.maxX){
			a=this.maxX
			}
		}
	if(this.constrainY){
	if(d<this.minY){
		d=this.minY
		}
		if(d>this.maxY){
		d=this.maxY
		}
	}
a=this.getTick(a,this.xTicks);
d=this.getTick(d,this.yTicks);
return{
	x:a,
	y:d
}
},
applyConfig:function(){
	Ext.dd.DD.superclass.applyConfig.call(this);
	this.scroll=(this.config.scroll!==false)
	},
b4MouseDown:function(a){
	this.autoOffset(a.getPageX(),a.getPageY())
	},
b4Drag:function(a){
	this.setDragElPos(a.getPageX(),a.getPageY())
	},
toString:function(){
	return("DD "+this.id)
	}
});
Ext.dd.DDProxy=function(c,a,b){
	if(c){
		this.init(c,a,b);
		this.initFrame()
		}
	};

Ext.dd.DDProxy.dragElId="ygddfdiv";
Ext.extend(Ext.dd.DDProxy,Ext.dd.DD,{
	resizeFrame:true,
	centerFrame:false,
	createFrame:function(){
		var b=this;
		var a=document.body;
		if(!a||!a.firstChild){
			setTimeout(function(){
				b.createFrame()
				},50);
			return
		}
		var d=this.getDragEl();
		if(!d){
			d=document.createElement("div");
			d.id=this.dragElId;
			var c=d.style;
			c.position="absolute";
			c.visibility="hidden";
			c.cursor="move";
			c.border="2px solid #aaa";
			c.zIndex=999;
			a.insertBefore(d,a.firstChild)
			}
		},
initFrame:function(){
	this.createFrame()
	},
applyConfig:function(){
	Ext.dd.DDProxy.superclass.applyConfig.call(this);
	this.resizeFrame=(this.config.resizeFrame!==false);
	this.centerFrame=(this.config.centerFrame);
	this.setDragElId(this.config.dragElId||Ext.dd.DDProxy.dragElId)
	},
showFrame:function(e,d){
	var c=this.getEl();
	var a=this.getDragEl();
	var b=a.style;
	this._resizeProxy();
	if(this.centerFrame){
		this.setDelta(Math.round(parseInt(b.width,10)/2),Math.round(parseInt(b.height,10)/2))
		}
		this.setDragElPos(e,d);
	Ext.fly(a).show()
	},
_resizeProxy:function(){
	if(this.resizeFrame){
		var a=this.getEl();
		Ext.fly(this.getDragEl()).setSize(a.offsetWidth,a.offsetHeight)
		}
	},
b4MouseDown:function(b){
	var a=b.getPageX();
	var c=b.getPageY();
	this.autoOffset(a,c);
	this.setDragElPos(a,c)
	},
b4StartDrag:function(a,b){
	this.showFrame(a,b)
	},
b4EndDrag:function(a){
	Ext.fly(this.getDragEl()).hide()
	},
endDrag:function(c){
	var b=this.getEl();
	var a=this.getDragEl();
	a.style.visibility="";
	this.beforeMove();
	b.style.visibility="hidden";
	Ext.dd.DDM.moveToEl(b,a);
	a.style.visibility="hidden";
	b.style.visibility="";
	this.afterDrag()
	},
beforeMove:function(){},
	afterDrag:function(){},
	toString:function(){
	return("DDProxy "+this.id)
	}
});
Ext.dd.DDTarget=function(c,a,b){
	if(c){
		this.initTarget(c,a,b)
		}
	};

Ext.extend(Ext.dd.DDTarget,Ext.dd.DragDrop,{
	getDragEl:Ext.emptyFn,
	isValidHandleChild:Ext.emptyFn,
	startDrag:Ext.emptyFn,
	endDrag:Ext.emptyFn,
	onDrag:Ext.emptyFn,
	onDragDrop:Ext.emptyFn,
	onDragEnter:Ext.emptyFn,
	onDragOut:Ext.emptyFn,
	onDragOver:Ext.emptyFn,
	onInvalidDrop:Ext.emptyFn,
	onMouseDown:Ext.emptyFn,
	onMouseUp:Ext.emptyFn,
	setXConstraint:Ext.emptyFn,
	setYConstraint:Ext.emptyFn,
	resetConstraints:Ext.emptyFn,
	clearConstraints:Ext.emptyFn,
	clearTicks:Ext.emptyFn,
	setInitPosition:Ext.emptyFn,
	setDragElId:Ext.emptyFn,
	setHandleElId:Ext.emptyFn,
	setOuterHandleElId:Ext.emptyFn,
	addInvalidHandleClass:Ext.emptyFn,
	addInvalidHandleId:Ext.emptyFn,
	addInvalidHandleType:Ext.emptyFn,
	removeInvalidHandleClass:Ext.emptyFn,
	removeInvalidHandleId:Ext.emptyFn,
	removeInvalidHandleType:Ext.emptyFn,
	toString:function(){
		return("DDTarget "+this.id)
		}
	});
Ext.dd.DragTracker=Ext.extend(Ext.util.Observable,{
	active:false,
	tolerance:5,
	autoStart:false,
	constructor:function(a){
		Ext.apply(this,a);
		this.addEvents("mousedown","mouseup","mousemove","dragstart","dragend","drag");
		this.dragRegion=new Ext.lib.Region(0,0,0,0);
		if(this.el){
			this.initEl(this.el)
			}
			Ext.dd.DragTracker.superclass.constructor.call(this,a)
		},
	initEl:function(a){
		this.el=Ext.get(a);
		a.on("mousedown",this.onMouseDown,this,this.delegate?{
			delegate:this.delegate
			}:undefined)
		},
	destroy:function(){
		this.el.un("mousedown",this.onMouseDown,this);
		delete this.el
		},
	onMouseDown:function(b,a){
		if(this.fireEvent("mousedown",this,b)!==false&&this.onBeforeStart(b)!==false){
			this.startXY=this.lastXY=b.getXY();
			this.dragTarget=this.delegate?a:this.el.dom;
			if(this.preventDefault!==false){
				b.preventDefault()
				}
				Ext.getDoc().on({
				scope:this,
				mouseup:this.onMouseUp,
				mousemove:this.onMouseMove,
				selectstart:this.stopSelect
				});
			if(this.autoStart){
				this.timer=this.triggerStart.defer(this.autoStart===true?1000:this.autoStart,this,[b])
				}
			}
	},
onMouseMove:function(d,c){
	if(this.active&&Ext.isIE&&!d.browserEvent.button){
		d.preventDefault();
		this.onMouseUp(d);
		return
	}
	d.preventDefault();
	var b=d.getXY(),a=this.startXY;
	this.lastXY=b;
	if(!this.active){
		if(Math.abs(a[0]-b[0])>this.tolerance||Math.abs(a[1]-b[1])>this.tolerance){
			this.triggerStart(d)
			}else{
			return
		}
	}
	this.fireEvent("mousemove",this,d);
	this.onDrag(d);
	this.fireEvent("drag",this,d)
	},
onMouseUp:function(c){
	var b=Ext.getDoc(),a=this.active;
	b.un("mousemove",this.onMouseMove,this);
	b.un("mouseup",this.onMouseUp,this);
	b.un("selectstart",this.stopSelect,this);
	c.preventDefault();
	this.clearStart();
	this.active=false;
	delete this.elRegion;
	this.fireEvent("mouseup",this,c);
	if(a){
		this.onEnd(c);
		this.fireEvent("dragend",this,c)
		}
	},
triggerStart:function(a){
	this.clearStart();
	this.active=true;
	this.onStart(a);
	this.fireEvent("dragstart",this,a)
	},
clearStart:function(){
	if(this.timer){
		clearTimeout(this.timer);
		delete this.timer
		}
	},
stopSelect:function(a){
	a.stopEvent();
	return false
	},
onBeforeStart:function(a){},
onStart:function(a){},
onDrag:function(a){},
onEnd:function(a){},
getDragTarget:function(){
	return this.dragTarget
	},
getDragCt:function(){
	return this.el
	},
getXY:function(a){
	return a?this.constrainModes[a].call(this,this.lastXY):this.lastXY
	},
getOffset:function(c){
	var b=this.getXY(c),a=this.startXY;
	return[a[0]-b[0],a[1]-b[1]]
	},
constrainModes:{
	point:function(b){
		if(!this.elRegion){
			this.elRegion=this.getDragCt().getRegion()
			}
			var a=this.dragRegion;
		a.left=b[0];
		a.top=b[1];
		a.right=b[0];
		a.bottom=b[1];
		a.constrainTo(this.elRegion);
		return[a.left,a.top]
		}
	}
});
Ext.dd.ScrollManager=function(){
	var c=Ext.dd.DragDropMgr;
	var e={};

	var b=null;
	var i={};

	var h=function(m){
		b=null;
		a()
		};

	var k=function(){
		if(c.dragCurrent){
			c.refreshCache(c.dragCurrent.groups)
			}
		};

var d=function(){
	if(c.dragCurrent){
		var m=Ext.dd.ScrollManager;
		var n=i.el.ddScrollConfig?i.el.ddScrollConfig.increment:m.increment;
		if(!m.animate){
			if(i.el.scroll(i.dir,n)){
				k()
				}
			}else{
		i.el.scroll(i.dir,n,true,m.animDuration,k)
		}
	}
};

var a=function(){
	if(i.id){
		clearInterval(i.id)
		}
		i.id=0;
	i.el=null;
	i.dir=""
	};

var g=function(n,m){
	a();
	i.el=n;
	i.dir=m;
	var p=n.ddScrollConfig?n.ddScrollConfig.ddGroup:undefined,o=(n.ddScrollConfig&&n.ddScrollConfig.frequency)?n.ddScrollConfig.frequency:Ext.dd.ScrollManager.frequency;
	if(p===undefined||c.dragCurrent.ddGroup==p){
		i.id=setInterval(d,o)
		}
	};

var l=function(p,s){
	if(s||!c.dragCurrent){
		return
	}
	var t=Ext.dd.ScrollManager;
	if(!b||b!=c.dragCurrent){
		b=c.dragCurrent;
		t.refreshCache()
		}
		var u=Ext.lib.Event.getXY(p);
	var v=new Ext.lib.Point(u[0],u[1]);
	for(var n in e){
		var o=e[n],m=o._region;
		var q=o.ddScrollConfig?o.ddScrollConfig:t;
		if(m&&m.contains(v)&&o.isScrollable()){
			if(m.bottom-v.y<=q.vthresh){
				if(i.el!=o){
					g(o,"down")
					}
					return
			}else{
				if(m.right-v.x<=q.hthresh){
					if(i.el!=o){
						g(o,"left")
						}
						return
				}else{
					if(v.y-m.top<=q.vthresh){
						if(i.el!=o){
							g(o,"up")
							}
							return
					}else{
						if(v.x-m.left<=q.hthresh){
							if(i.el!=o){
								g(o,"right")
								}
								return
						}
					}
				}
		}
	}
}
a()
};

c.fireEvents=c.fireEvents.createSequence(l,c);
c.stopDrag=c.stopDrag.createSequence(h,c);
return{
	register:function(o){
		if(Ext.isArray(o)){
			for(var n=0,m=o.length;n<m;n++){
				this.register(o[n])
				}
			}else{
		o=Ext.get(o);
		e[o.id]=o
		}
	},
unregister:function(o){
	if(Ext.isArray(o)){
		for(var n=0,m=o.length;n<m;n++){
			this.unregister(o[n])
			}
		}else{
	o=Ext.get(o);
	delete e[o.id]
}
},
vthresh:25,
hthresh:25,
increment:100,
frequency:500,
animate:true,
animDuration:0.4,
ddGroup:undefined,
refreshCache:function(){
	for(var m in e){
		if(typeof e[m]=="object"){
			e[m]._region=e[m].getRegion()
			}
		}
	}
}
}();
Ext.dd.Registry=function(){
	var d={};

	var b={};

	var a=0;
	var c=function(g,e){
		if(typeof g=="string"){
			return g
			}
			var h=g.id;
		if(!h&&e!==false){
			h="extdd-"+(++a);
			g.id=h
			}
			return h
		};

	return{
		register:function(k,l){
			l=l||{};

			if(typeof k=="string"){
				k=document.getElementById(k)
				}
				l.ddel=k;
			d[c(k)]=l;
			if(l.isHandle!==false){
				b[l.ddel.id]=l
				}
				if(l.handles){
				var h=l.handles;
				for(var g=0,e=h.length;g<e;g++){
					b[c(h[g])]=l
					}
				}
			},
unregister:function(k){
	var m=c(k,false);
	var l=d[m];
	if(l){
		delete d[m];
		if(l.handles){
			var h=l.handles;
			for(var g=0,e=h.length;g<e;g++){
				delete b[c(h[g],false)]
			}
			}
		}
},
getHandle:function(e){
	if(typeof e!="string"){
		e=e.id
		}
		return b[e]
	},
getHandleFromEvent:function(h){
	var g=Ext.lib.Event.getTarget(h);
	return g?b[g.id]:null
	},
getTarget:function(e){
	if(typeof e!="string"){
		e=e.id
		}
		return d[e]
	},
getTargetFromEvent:function(h){
	var g=Ext.lib.Event.getTarget(h);
	return g?d[g.id]||b[g.id]:null
	}
}
}();
Ext.dd.StatusProxy=function(a){
	Ext.apply(this,a);
	this.id=this.id||Ext.id();
	this.el=new Ext.Layer({
		dh:{
			id:this.id,
			tag:"div",
			cls:"x-dd-drag-proxy "+this.dropNotAllowed,
			children:[{
				tag:"div",
				cls:"x-dd-drop-icon"
			},{
				tag:"div",
				cls:"x-dd-drag-ghost"
			}]
			},
		shadow:!a||a.shadow!==false
		});
	this.ghost=Ext.get(this.el.dom.childNodes[1]);
	this.dropStatus=this.dropNotAllowed
	};

Ext.dd.StatusProxy.prototype={
	dropAllowed:"x-dd-drop-ok",
	dropNotAllowed:"x-dd-drop-nodrop",
	setStatus:function(a){
		a=a||this.dropNotAllowed;
		if(this.dropStatus!=a){
			this.el.replaceClass(this.dropStatus,a);
			this.dropStatus=a
			}
		},
reset:function(a){
	this.el.dom.className="x-dd-drag-proxy "+this.dropNotAllowed;
	this.dropStatus=this.dropNotAllowed;
	if(a){
		this.ghost.update("")
		}
	},
update:function(a){
	if(typeof a=="string"){
		this.ghost.update(a)
		}else{
		this.ghost.update("");
		a.style.margin="0";
		this.ghost.dom.appendChild(a)
		}
		var b=this.ghost.dom.firstChild;
	if(b){
		Ext.fly(b).setStyle("float","none")
		}
	},
getEl:function(){
	return this.el
	},
getGhost:function(){
	return this.ghost
	},
hide:function(a){
	this.el.hide();
	if(a){
		this.reset(true)
		}
	},
stop:function(){
	if(this.anim&&this.anim.isAnimated&&this.anim.isAnimated()){
		this.anim.stop()
		}
	},
show:function(){
	this.el.show()
	},
sync:function(){
	this.el.sync()
	},
repair:function(b,c,a){
	this.callback=c;
	this.scope=a;
	if(b&&this.animRepair!==false){
		this.el.addClass("x-dd-drag-repair");
		this.el.hideUnders(true);
		this.anim=this.el.shift({
			duration:this.repairDuration||0.5,
			easing:"easeOut",
			xy:b,
			stopFx:true,
			callback:this.afterRepair,
			scope:this
		})
		}else{
		this.afterRepair()
		}
	},
afterRepair:function(){
	this.hide(true);
	if(typeof this.callback=="function"){
		this.callback.call(this.scope||this)
		}
		this.callback=null;
	this.scope=null
	},
destroy:function(){
	Ext.destroy(this.ghost,this.el)
	}
};

Ext.dd.DragSource=function(b,a){
	this.el=Ext.get(b);
	if(!this.dragData){
		this.dragData={}
	}
	Ext.apply(this,a);
	if(!this.proxy){
	this.proxy=new Ext.dd.StatusProxy()
	}
	Ext.dd.DragSource.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{
	dragElId:this.proxy.id,
	resizeFrame:false,
	isTarget:false,
	scroll:this.scroll===true
	});
this.dragging=false
};

Ext.extend(Ext.dd.DragSource,Ext.dd.DDProxy,{
	dropAllowed:"x-dd-drop-ok",
	dropNotAllowed:"x-dd-drop-nodrop",
	getDragData:function(a){
		return this.dragData
		},
	onDragEnter:function(c,d){
		var b=Ext.dd.DragDropMgr.getDDById(d);
		this.cachedTarget=b;
		if(this.beforeDragEnter(b,c,d)!==false){
			if(b.isNotifyTarget){
				var a=b.notifyEnter(this,c,this.dragData);
				this.proxy.setStatus(a)
				}else{
				this.proxy.setStatus(this.dropAllowed)
				}
				if(this.afterDragEnter){
				this.afterDragEnter(b,c,d)
				}
			}
	},
beforeDragEnter:function(b,a,c){
	return true
	},
alignElWithMouse:function(){
	Ext.dd.DragSource.superclass.alignElWithMouse.apply(this,arguments);
	this.proxy.sync()
	},
onDragOver:function(c,d){
	var b=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(d);
	if(this.beforeDragOver(b,c,d)!==false){
		if(b.isNotifyTarget){
			var a=b.notifyOver(this,c,this.dragData);
			this.proxy.setStatus(a)
			}
			if(this.afterDragOver){
			this.afterDragOver(b,c,d)
			}
		}
},
beforeDragOver:function(b,a,c){
	return true
	},
onDragOut:function(b,c){
	var a=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(c);
	if(this.beforeDragOut(a,b,c)!==false){
		if(a.isNotifyTarget){
			a.notifyOut(this,b,this.dragData)
			}
			this.proxy.reset();
		if(this.afterDragOut){
			this.afterDragOut(a,b,c)
			}
		}
	this.cachedTarget=null
},
beforeDragOut:function(b,a,c){
	return true
	},
onDragDrop:function(b,c){
	var a=this.cachedTarget||Ext.dd.DragDropMgr.getDDById(c);
	if(this.beforeDragDrop(a,b,c)!==false){
		if(a.isNotifyTarget){
			if(a.notifyDrop(this,b,this.dragData)){
				this.onValidDrop(a,b,c)
				}else{
				this.onInvalidDrop(a,b,c)
				}
			}else{
		this.onValidDrop(a,b,c)
		}
		if(this.afterDragDrop){
		this.afterDragDrop(a,b,c)
		}
	}
delete this.cachedTarget
},
beforeDragDrop:function(b,a,c){
	return true
	},
onValidDrop:function(b,a,c){
	this.hideProxy();
	if(this.afterValidDrop){
		this.afterValidDrop(b,a,c)
		}
	},
getRepairXY:function(b,a){
	return this.el.getXY()
	},
onInvalidDrop:function(b,a,c){
	this.beforeInvalidDrop(b,a,c);
	if(this.cachedTarget){
		if(this.cachedTarget.isNotifyTarget){
			this.cachedTarget.notifyOut(this,a,this.dragData)
			}
			this.cacheTarget=null
		}
		this.proxy.repair(this.getRepairXY(a,this.dragData),this.afterRepair,this);
	if(this.afterInvalidDrop){
		this.afterInvalidDrop(a,c)
		}
	},
afterRepair:function(){
	if(Ext.enableFx){
		this.el.highlight(this.hlColor||"c3daf9")
		}
		this.dragging=false
	},
beforeInvalidDrop:function(b,a,c){
	return true
	},
handleMouseDown:function(b){
	if(this.dragging){
		return
	}
	var a=this.getDragData(b);
	if(a&&this.onBeforeDrag(a,b)!==false){
		this.dragData=a;
		this.proxy.stop();
		Ext.dd.DragSource.superclass.handleMouseDown.apply(this,arguments)
		}
	},
onBeforeDrag:function(a,b){
	return true
	},
onStartDrag:Ext.emptyFn,
startDrag:function(a,b){
	this.proxy.reset();
	this.dragging=true;
	this.proxy.update("");
	this.onInitDrag(a,b);
	this.proxy.show()
	},
onInitDrag:function(a,c){
	var b=this.el.dom.cloneNode(true);
	b.id=Ext.id();
	this.proxy.update(b);
	this.onStartDrag(a,c);
	return true
	},
getProxy:function(){
	return this.proxy
	},
hideProxy:function(){
	this.proxy.hide();
	this.proxy.reset(true);
	this.dragging=false
	},
triggerCacheRefresh:function(){
	Ext.dd.DDM.refreshCache(this.groups)
	},
b4EndDrag:function(a){},
endDrag:function(a){
	this.onEndDrag(this.dragData,a)
	},
onEndDrag:function(a,b){},
autoOffset:function(a,b){
	this.setDelta(-12,-20)
	},
destroy:function(){
	Ext.dd.DragSource.superclass.destroy.call(this);
	Ext.destroy(this.proxy)
	}
});
Ext.dd.DropTarget=Ext.extend(Ext.dd.DDTarget,{
	constructor:function(b,a){
		this.el=Ext.get(b);
		Ext.apply(this,a);
		if(this.containerScroll){
			Ext.dd.ScrollManager.register(this.el)
			}
			Ext.dd.DropTarget.superclass.constructor.call(this,this.el.dom,this.ddGroup||this.group,{
			isTarget:true
		})
		},
	dropAllowed:"x-dd-drop-ok",
	dropNotAllowed:"x-dd-drop-nodrop",
	isTarget:true,
	isNotifyTarget:true,
	notifyEnter:function(a,c,b){
		if(this.overClass){
			this.el.addClass(this.overClass)
			}
			return this.dropAllowed
		},
	notifyOver:function(a,c,b){
		return this.dropAllowed
		},
	notifyOut:function(a,c,b){
		if(this.overClass){
			this.el.removeClass(this.overClass)
			}
		},
notifyDrop:function(a,c,b){
	return false
	},
destroy:function(){
	Ext.dd.DropTarget.superclass.destroy.call(this);
	if(this.containerScroll){
		Ext.dd.ScrollManager.unregister(this.el)
		}
	}
});
Ext.dd.DragZone=Ext.extend(Ext.dd.DragSource,{
	constructor:function(b,a){
		Ext.dd.DragZone.superclass.constructor.call(this,b,a);
		if(this.containerScroll){
			Ext.dd.ScrollManager.register(this.el)
			}
		},
getDragData:function(a){
	return Ext.dd.Registry.getHandleFromEvent(a)
	},
onInitDrag:function(a,b){
	this.proxy.update(this.dragData.ddel.cloneNode(true));
	this.onStartDrag(a,b);
	return true
	},
afterRepair:function(){
	if(Ext.enableFx){
		Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")
		}
		this.dragging=false
	},
getRepairXY:function(a){
	return Ext.Element.fly(this.dragData.ddel).getXY()
	},
destroy:function(){
	Ext.dd.DragZone.superclass.destroy.call(this);
	if(this.containerScroll){
		Ext.dd.ScrollManager.unregister(this.el)
		}
	}
});
Ext.dd.DropZone=function(b,a){
	Ext.dd.DropZone.superclass.constructor.call(this,b,a)
	};

Ext.extend(Ext.dd.DropZone,Ext.dd.DropTarget,{
	getTargetFromEvent:function(a){
		return Ext.dd.Registry.getTargetFromEvent(a)
		},
	onNodeEnter:function(d,a,c,b){},
	onNodeOver:function(d,a,c,b){
		return this.dropAllowed
		},
	onNodeOut:function(d,a,c,b){},
	onNodeDrop:function(d,a,c,b){
		return false
		},
	onContainerOver:function(a,c,b){
		return this.dropNotAllowed
		},
	onContainerDrop:function(a,c,b){
		return false
		},
	notifyEnter:function(a,c,b){
		return this.dropNotAllowed
		},
	notifyOver:function(a,c,b){
		var d=this.getTargetFromEvent(c);
		if(!d){
			if(this.lastOverNode){
				this.onNodeOut(this.lastOverNode,a,c,b);
				this.lastOverNode=null
				}
				return this.onContainerOver(a,c,b)
			}
			if(this.lastOverNode!=d){
			if(this.lastOverNode){
				this.onNodeOut(this.lastOverNode,a,c,b)
				}
				this.onNodeEnter(d,a,c,b);
			this.lastOverNode=d
			}
			return this.onNodeOver(d,a,c,b)
		},
	notifyOut:function(a,c,b){
		if(this.lastOverNode){
			this.onNodeOut(this.lastOverNode,a,c,b);
			this.lastOverNode=null
			}
		},
notifyDrop:function(a,c,b){
	if(this.lastOverNode){
		this.onNodeOut(this.lastOverNode,a,c,b);
		this.lastOverNode=null
		}
		var d=this.getTargetFromEvent(c);
	return d?this.onNodeDrop(d,a,c,b):this.onContainerDrop(a,c,b)
	},
triggerCacheRefresh:function(){
	Ext.dd.DDM.refreshCache(this.groups)
	}
});
Ext.Element.addMethods({
	initDD:function(c,b,d){
		var a=new Ext.dd.DD(Ext.id(this.dom),c,b);
		return Ext.apply(a,d)
		},
	initDDProxy:function(c,b,d){
		var a=new Ext.dd.DDProxy(Ext.id(this.dom),c,b);
		return Ext.apply(a,d)
		},
	initDDTarget:function(c,b,d){
		var a=new Ext.dd.DDTarget(Ext.id(this.dom),c,b);
		return Ext.apply(a,d)
		}
	});
Ext.data.Api=(function(){
	var a={};

	return{
		actions:{
			create:"create",
			read:"read",
			update:"update",
			destroy:"destroy"
		},
		restActions:{
			create:"POST",
			read:"GET",
			update:"PUT",
			destroy:"DELETE"
		},
		isAction:function(b){
			return(Ext.data.Api.actions[b])?true:false
			},
		getVerb:function(b){
			if(a[b]){
				return a[b]
				}
				for(var c in this.actions){
				if(this.actions[c]===b){
					a[b]=c;
					break
				}
			}
			return(a[b]!==undefined)?a[b]:null
		},
	isValid:function(b){
		var e=[];
		var d=this.actions;
		for(var c in b){
			if(!(c in d)){
				e.push(c)
				}
			}
		return(!e.length)?true:e
	},
hasUniqueUrl:function(c,g){
	var b=(c.api[g])?c.api[g].url:null;
	var e=true;
	for(var d in c.api){
		if((e=(d===g)?true:(c.api[d].url!=b)?true:false)===false){
			break
		}
	}
	return e
},
prepare:function(b){
	if(!b.api){
		b.api={}
	}
	for(var d in this.actions){
	var c=this.actions[d];
	b.api[c]=b.api[c]||b.url||b.directFn;
	if(typeof(b.api[c])=="string"){
		b.api[c]={
			url:b.api[c],
			method:(b.restful===true)?Ext.data.Api.restActions[c]:undefined
			}
		}
}
},
restify:function(b){
	b.restful=true;
	for(var c in this.restActions){
		b.api[this.actions[c]].method||(b.api[this.actions[c]].method=this.restActions[c])
		}
		b.onWrite=b.onWrite.createInterceptor(function(i,k,g,e){
		var d=k.reader;
		var h=new Ext.data.Response({
			action:i,
			raw:g
		});
		switch(g.status){
			case 200:
				return true;
				break;
			case 201:
				if(Ext.isEmpty(h.raw.responseText)){
				h.success=true
				}else{
				return true
				}
				break;
			case 204:
				h.success=true;
				h.data=null;
				break;
			default:
				return true;
				break
				}
				if(h.success===true){
			this.fireEvent("write",this,i,h.data,h,e,k.request.arg)
			}else{
			this.fireEvent("exception",this,"remote",i,k,h,e)
			}
			k.request.callback.call(k.request.scope,h.data,h,h.success);
		return false
		},b)
	}
}
})();
Ext.data.Response=function(b,a){
	Ext.apply(this,b,{
		raw:a
	})
	};

Ext.data.Response.prototype={
	message:null,
	success:false,
	status:null,
	root:null,
	raw:null,
	getMessage:function(){
		return this.message
		},
	getSuccess:function(){
		return this.success
		},
	getStatus:function(){
		return this.status
		},
	getRoot:function(){
		return this.root
		},
	getRawResponse:function(){
		return this.raw
		}
	};

Ext.data.Api.Error=Ext.extend(Ext.Error,{
	constructor:function(b,a){
		this.arg=a;
		Ext.Error.call(this,b)
		},
	name:"Ext.data.Api"
});
Ext.apply(Ext.data.Api.Error.prototype,{
	lang:{
		"action-url-undefined":"No fallback url defined for this action.  When defining a DataProxy api, please be sure to define an url for each CRUD action in Ext.data.Api.actions or define a default url in addition to your api-configuration.",
		invalid:"received an invalid API-configuration.  Please ensure your proxy API-configuration contains only the actions defined in Ext.data.Api.actions",
		"invalid-url":"Invalid url.  Please review your proxy configuration.",
		execute:'Attempted to execute an unknown action.  Valid API actions are defined in Ext.data.Api.actions"'
	}
});
Ext.data.SortTypes={
	none:function(a){
		return a
		},
	stripTagsRE:/<\/?[^>]+>/gi,
	asText:function(a){
		return String(a).replace(this.stripTagsRE,"")
		},
	asUCText:function(a){
		return String(a).toUpperCase().replace(this.stripTagsRE,"")
		},
	asUCString:function(a){
		return String(a).toUpperCase()
		},
	asDate:function(a){
		if(!a){
			return 0
			}
			if(Ext.isDate(a)){
			return a.getTime()
			}
			return Date.parse(String(a))
		},
	asFloat:function(a){
		var b=parseFloat(String(a).replace(/,/g,""));
		return isNaN(b)?0:b
		},
	asInt:function(a){
		var b=parseInt(String(a).replace(/,/g,""),10);
		return isNaN(b)?0:b
		}
	};

Ext.data.Record=function(a,b){
	this.id=(b||b===0)?b:Ext.data.Record.id(this);
	this.data=a||{}
};

Ext.data.Record.create=function(e){
	var c=Ext.extend(Ext.data.Record,{});
	var d=c.prototype;
	d.fields=new Ext.util.MixedCollection(false,function(g){
		return g.name
		});
	for(var b=0,a=e.length;b<a;b++){
		d.fields.add(new Ext.data.Field(e[b]))
		}
		c.getField=function(g){
		return d.fields.get(g)
		};

	return c
	};

Ext.data.Record.PREFIX="ext-record";
Ext.data.Record.AUTO_ID=1;
Ext.data.Record.EDIT="edit";
Ext.data.Record.REJECT="reject";
Ext.data.Record.COMMIT="commit";
Ext.data.Record.id=function(a){
	a.phantom=true;
	return[Ext.data.Record.PREFIX,"-",Ext.data.Record.AUTO_ID++].join("")
	};

Ext.data.Record.prototype={
	dirty:false,
	editing:false,
	error:null,
	modified:null,
	phantom:false,
	join:function(a){
		this.store=a
		},
	set:function(a,c){
		var b=Ext.isPrimitive(c)?String:Ext.encode;
		if(b(this.data[a])==b(c)){
			return
		}
		this.dirty=true;
		if(!this.modified){
			this.modified={}
		}
		if(this.modified[a]===undefined){
		this.modified[a]=this.data[a]
		}
		this.data[a]=c;
	if(!this.editing){
		this.afterEdit()
		}
	},
afterEdit:function(){
	if(this.store!=undefined&&typeof this.store.afterEdit=="function"){
		this.store.afterEdit(this)
		}
	},
afterReject:function(){
	if(this.store){
		this.store.afterReject(this)
		}
	},
afterCommit:function(){
	if(this.store){
		this.store.afterCommit(this)
		}
	},
get:function(a){
	return this.data[a]
	},
beginEdit:function(){
	this.editing=true;
	this.modified=this.modified||{}
},
cancelEdit:function(){
	this.editing=false;
	delete this.modified
	},
endEdit:function(){
	this.editing=false;
	if(this.dirty){
		this.afterEdit()
		}
	},
reject:function(b){
	var a=this.modified;
	for(var c in a){
		if(typeof a[c]!="function"){
			this.data[c]=a[c]
			}
		}
	this.dirty=false;
delete this.modified;
this.editing=false;
if(b!==true){
	this.afterReject()
	}
},
commit:function(a){
	this.dirty=false;
	delete this.modified;
	this.editing=false;
	if(a!==true){
		this.afterCommit()
		}
	},
getChanges:function(){
	var a=this.modified,b={};

	for(var c in a){
		if(a.hasOwnProperty(c)){
			b[c]=this.data[c]
			}
		}
	return b
},
hasError:function(){
	return this.error!==null
	},
clearError:function(){
	this.error=null
	},
copy:function(a){
	return new this.constructor(Ext.apply({},this.data),a||this.id)
	},
isModified:function(a){
	return !!(this.modified&&this.modified.hasOwnProperty(a))
	},
isValid:function(){
	return this.fields.find(function(a){
		return(a.allowBlank===false&&Ext.isEmpty(this.data[a.name]))?true:false
		},this)?false:true
	},
markDirty:function(){
	this.dirty=true;
	if(!this.modified){
		this.modified={}
	}
	this.fields.each(function(a){
	this.modified[a.name]=this.data[a.name]
	},this)
}
};

Ext.StoreMgr=Ext.apply(new Ext.util.MixedCollection(),{
	register:function(){
		for(var a=0,b;(b=arguments[a]);a++){
			this.add(b)
			}
		},
unregister:function(){
	for(var a=0,b;(b=arguments[a]);a++){
		this.remove(this.lookup(b))
		}
	},
lookup:function(e){
	if(Ext.isArray(e)){
		var b=["field1"],d=!Ext.isArray(e[0]);
		if(!d){
			for(var c=2,a=e[0].length;c<=a;++c){
				b.push("field"+c)
				}
			}
			return new Ext.data.ArrayStore({
		fields:b,
		data:e,
		expandData:d,
		autoDestroy:true,
		autoCreated:true
	})
	}
	return Ext.isObject(e)?(e.events?e:Ext.create(e,"store")):this.get(e)
	},
getKey:function(a){
	return a.storeId
	}
});
Ext.data.Store=Ext.extend(Ext.util.Observable,{
	writer:undefined,
	remoteSort:false,
	autoDestroy:false,
	pruneModifiedRecords:false,
	lastOptions:null,
	autoSave:true,
	batch:true,
	restful:false,
	paramNames:undefined,
	defaultParamNames:{
		start:"start",
		limit:"limit",
		sort:"sort",
		dir:"dir"
	},
	isDestroyed:false,
	hasMultiSort:false,
	batchKey:"_ext_batch_",
	constructor:function(a){
		this.data=new Ext.util.MixedCollection(false);
		this.data.getKey=function(b){
			return b.id
			};

		this.removed=[];
		if(a&&a.data){
			this.inlineData=a.data;
			delete a.data
			}
			Ext.apply(this,a);
		this.baseParams=Ext.isObject(this.baseParams)?this.baseParams:{};

		this.paramNames=Ext.applyIf(this.paramNames||{},this.defaultParamNames);
		if((this.url||this.api)&&!this.proxy){
			this.proxy=new Ext.data.HttpProxy({
				url:this.url,
				api:this.api
				})
			}
			if(this.restful===true&&this.proxy){
			this.batch=false;
			Ext.data.Api.restify(this.proxy)
			}
			if(this.reader){
			if(!this.recordType){
				this.recordType=this.reader.recordType
				}
				if(this.reader.onMetaChange){
				this.reader.onMetaChange=this.reader.onMetaChange.createSequence(this.onMetaChange,this)
				}
				if(this.writer){
				if(this.writer instanceof (Ext.data.DataWriter)===false){
					this.writer=this.buildWriter(this.writer)
					}
					this.writer.meta=this.reader.meta;
				this.pruneModifiedRecords=true
				}
			}
		if(this.recordType){
		this.fields=this.recordType.prototype.fields
		}
		this.modified=[];
	this.addEvents("datachanged","metachange","add","remove","update","clear","exception","beforeload","load","loadexception","beforewrite","write","beforesave","save");
	if(this.proxy){
		this.relayEvents(this.proxy,["loadexception","exception"])
		}
		if(this.writer){
		this.on({
			scope:this,
			add:this.createRecords,
			remove:this.destroyRecord,
			update:this.updateRecord,
			clear:this.onClear
			})
		}
		this.sortToggle={};

	if(this.sortField){
		this.setDefaultSort(this.sortField,this.sortDir)
		}else{
		if(this.sortInfo){
			this.setDefaultSort(this.sortInfo.field,this.sortInfo.direction)
			}
		}
	Ext.data.Store.superclass.constructor.call(this);
	if(this.id){
	this.storeId=this.id;
	delete this.id
	}
	if(this.storeId){
	Ext.StoreMgr.register(this)
	}
	if(this.inlineData){
	this.loadData(this.inlineData);
	delete this.inlineData
	}else{
	if(this.autoLoad){
		this.load.defer(10,this,[typeof this.autoLoad=="object"?this.autoLoad:undefined])
		}
	}
this.batchCounter=0;
this.batches={}
},
buildWriter:function(b){
	var a=undefined,c=(b.format||"json").toLowerCase();
	switch(c){
		case"json":
			a=Ext.data.JsonWriter;
			break;
		case"xml":
			a=Ext.data.XmlWriter;
			break;
		default:
			a=Ext.data.JsonWriter
			}
			return new a(b)
	},
destroy:function(){
	if(!this.isDestroyed){
		if(this.storeId){
			Ext.StoreMgr.unregister(this)
			}
			this.clearData();
		this.data=null;
		Ext.destroy(this.proxy);
		this.reader=this.writer=null;
		this.purgeListeners();
		this.isDestroyed=true
		}
	},
add:function(c){
	var e,a,b,d;
	c=[].concat(c);
	if(c.length<1){
		return
	}
	for(e=0,a=c.length;e<a;e++){
		b=c[e];
		b.join(this);
		if(b.dirty||b.phantom){
			this.modified.push(b)
			}
		}
	d=this.data.length;
this.data.addAll(c);
if(this.snapshot){
	this.snapshot.addAll(c)
	}
	this.fireEvent("add",this,c,d)
},
addSorted:function(a){
	var b=this.findInsertIndex(a);
	this.insert(b,a)
	},
doUpdate:function(a){
	this.data.replace(a.id,a);
	if(this.snapshot){
		this.snapshot.replace(a.id,a)
		}
		this.fireEvent("update",this,a,Ext.data.Record.COMMIT)
	},
remove:function(a){
	if(Ext.isArray(a)){
		Ext.each(a,function(c){
			this.remove(c)
			},this);
		return
	}
	var b=this.data.indexOf(a);
	if(b>-1){
		a.join(null);
		this.data.removeAt(b)
		}
		if(this.pruneModifiedRecords){
		this.modified.remove(a)
		}
		if(this.snapshot){
		this.snapshot.remove(a)
		}
		if(b>-1){
		this.fireEvent("remove",this,a,b)
		}
	},
removeAt:function(a){
	this.remove(this.getAt(a))
	},
removeAll:function(b){
	var a=[];
	this.each(function(c){
		a.push(c)
		});
	this.clearData();
	if(this.snapshot){
		this.snapshot.clear()
		}
		if(this.pruneModifiedRecords){
		this.modified=[]
		}
		if(b!==true){
		this.fireEvent("clear",this,a)
		}
	},
onClear:function(b,a){
	Ext.each(a,function(d,c){
		this.destroyRecord(this,d,c)
		},this)
	},
insert:function(d,c){
	var e,a,b;
	c=[].concat(c);
	for(e=0,a=c.length;e<a;e++){
		b=c[e];
		this.data.insert(d+e,b);
		b.join(this);
		if(b.dirty||b.phantom){
			this.modified.push(b)
			}
		}
	if(this.snapshot){
	this.snapshot.addAll(c)
	}
	this.fireEvent("add",this,c,d)
},
indexOf:function(a){
	return this.data.indexOf(a)
	},
indexOfId:function(a){
	return this.data.indexOfKey(a)
	},
getById:function(a){
	return(this.snapshot||this.data).key(a)
	},
getAt:function(a){
	return this.data.itemAt(a)
	},
getRange:function(b,a){
	return this.data.getRange(b,a)
	},
storeOptions:function(a){
	a=Ext.apply({},a);
	delete a.callback;
	delete a.scope;
	this.lastOptions=a
	},
clearData:function(){
	this.data.each(function(a){
		a.join(null)
		});
	this.data.clear()
	},
load:function(b){
	b=Ext.apply({},b);
	this.storeOptions(b);
	if(this.sortInfo&&this.remoteSort){
		var a=this.paramNames;
		b.params=Ext.apply({},b.params);
		b.params[a.sort]=this.sortInfo.field;
		b.params[a.dir]=this.sortInfo.direction
		}
		try{
		return this.execute("read",null,b)
		}catch(c){
		this.handleException(c);
		return false
		}
	},
updateRecord:function(b,a,c){
	if(c==Ext.data.Record.EDIT&&this.autoSave===true&&(!a.phantom||(a.phantom&&a.isValid()))){
		this.save()
		}
	},
createRecords:function(c,b,e){
	var d=this.modified,h=b.length,a,g;
	for(g=0;g<h;g++){
		a=b[g];
		if(a.phantom&&a.isValid()){
			a.markDirty();
			if(d.indexOf(a)==-1){
				d.push(a)
				}
			}
	}
	if(this.autoSave===true){
	this.save()
	}
},
destroyRecord:function(b,a,c){
	if(this.modified.indexOf(a)!=-1){
		this.modified.remove(a)
		}
		if(!a.phantom){
		this.removed.push(a);
		a.lastIndex=c;
		if(this.autoSave===true){
			this.save()
			}
		}
},
execute:function(e,a,c,b){
	if(!Ext.data.Api.isAction(e)){
		throw new Ext.data.Api.Error("execute",e)
		}
		c=Ext.applyIf(c||{},{
		params:{}
	});
if(b!==undefined){
	this.addToBatch(b)
	}
	var d=true;
if(e==="read"){
	d=this.fireEvent("beforeload",this,c);
	Ext.applyIf(c.params,this.baseParams)
	}else{
	if(this.writer.listful===true&&this.restful!==true){
		a=(Ext.isArray(a))?a:[a]
		}else{
		if(Ext.isArray(a)&&a.length==1){
			a=a.shift()
			}
		}
	if((d=this.fireEvent("beforewrite",this,e,a,c))!==false){
	this.writer.apply(c.params,this.baseParams,e,a)
	}
}
if(d!==false){
	if(this.writer&&this.proxy.url&&!this.proxy.restful&&!Ext.data.Api.hasUniqueUrl(this.proxy,e)){
		c.params.xaction=e
		}
		this.proxy.request(Ext.data.Api.actions[e],a,c.params,this.reader,this.createCallback(e,a,b),this,c)
	}
	return d
},
save:function(){
	if(!this.writer){
		throw new Ext.data.Store.Error("writer-undefined")
		}
		var h=[],k,l,e,c={},d;
	if(this.removed.length){
		h.push(["destroy",this.removed])
		}
		var b=[].concat(this.getModifiedRecords());
	if(b.length){
		var g=[];
		for(d=b.length-1;d>=0;d--){
			if(b[d].phantom===true){
				var a=b.splice(d,1).shift();
				if(a.isValid()){
					g.push(a)
					}
				}else{
			if(!b[d].isValid()){
				b.splice(d,1)
				}
			}
		}
	if(g.length){
	h.push(["create",g])
	}
	if(b.length){
	h.push(["update",b])
	}
}
k=h.length;
if(k){
	e=++this.batchCounter;
	for(d=0;d<k;++d){
		l=h[d];
		c[l[0]]=l[1]
		}
		if(this.fireEvent("beforesave",this,c)!==false){
		for(d=0;d<k;++d){
			l=h[d];
			this.doTransaction(l[0],l[1],e)
			}
			return e
		}
	}
return -1
},
doTransaction:function(e,b,c){
	function g(h){
		try{
			this.execute(e,h,undefined,c)
			}catch(i){
			this.handleException(i)
			}
		}
	if(this.batch===false){
	for(var d=0,a=b.length;d<a;d++){
		g.call(this,b[d])
		}
	}else{
	g.call(this,b)
	}
},
addToBatch:function(c){
	var a=this.batches,d=this.batchKey+c,e=a[d];
	if(!e){
		a[d]=e={
			id:c,
			count:0,
			data:{}
	}
}
++e.count
},
removeFromBatch:function(d,h,g){
	var c=this.batches,e=this.batchKey+d,i=c[e],a;
	if(i){
		a=i.data[h]||[];
		i.data[h]=a.concat(g);
		if(i.count===1){
			g=i.data;
			delete c[e];
			this.fireEvent("save",this,d,g)
			}else{
			--i.count
			}
		}
},
createCallback:function(c,a,b){
	var d=Ext.data.Api.actions;
	return(c=="read")?this.loadRecords:function(g,e,h){
		this["on"+Ext.util.Format.capitalize(c)+"Records"](h,a,[].concat(g));
		if(h===true){
			this.fireEvent("write",this,c,g,e,a)
			}
			this.removeFromBatch(b,c,g)
		}
	},
clearModified:function(a){
	if(Ext.isArray(a)){
		for(var b=a.length-1;b>=0;b--){
			this.modified.splice(this.modified.indexOf(a[b]),1)
			}
		}else{
	this.modified.splice(this.modified.indexOf(a),1)
	}
},
reMap:function(b){
	if(Ext.isArray(b)){
		for(var d=0,a=b.length;d<a;d++){
			this.reMap(b[d])
			}
		}else{
	delete this.data.map[b._phid];
	this.data.map[b.id]=b;
	var c=this.data.keys.indexOf(b._phid);
	this.data.keys.splice(c,1,b.id);
	delete b._phid
	}
},
onCreateRecords:function(d,a,b){
	if(d===true){
		try{
			this.reader.realize(a,b);
			this.reMap(a)
			}catch(c){
			this.handleException(c);
			if(Ext.isArray(a)){
				this.onCreateRecords(d,a,b)
				}
			}
	}
},
onUpdateRecords:function(d,a,b){
	if(d===true){
		try{
			this.reader.update(a,b)
			}catch(c){
			this.handleException(c);
			if(Ext.isArray(a)){
				this.onUpdateRecords(d,a,b)
				}
			}
	}
},
onDestroyRecords:function(e,b,d){
	b=(b instanceof Ext.data.Record)?[b]:[].concat(b);
	for(var c=0,a=b.length;c<a;c++){
		this.removed.splice(this.removed.indexOf(b[c]),1)
		}
		if(e===false){
		for(c=b.length-1;c>=0;c--){
			this.insert(b[c].lastIndex,b[c])
			}
		}
	},
handleException:function(a){
	Ext.handleError(a)
	},
reload:function(a){
	this.load(Ext.applyIf(a||{},this.lastOptions))
	},
loadRecords:function(b,m,h){
	var e,g;
	if(this.isDestroyed===true){
		return
	}
	if(!b||h===false){
		if(h!==false){
			this.fireEvent("load",this,[],m)
			}
			if(m.callback){
			m.callback.call(m.scope||this,[],m,false,b)
			}
			return
	}
	var a=b.records,k=b.totalRecords||a.length;
	if(!m||m.add!==true){
		if(this.pruneModifiedRecords){
			this.modified=[]
			}
			for(e=0,g=a.length;e<g;e++){
			a[e].join(this)
			}
			if(this.snapshot){
			this.data=this.snapshot;
			delete this.snapshot
			}
			this.clearData();
		this.data.addAll(a);
		this.totalLength=k;
		this.applySort();
		this.fireEvent("datachanged",this)
		}else{
		var l=[],d,c=0;
		for(e=0,g=a.length;e<g;++e){
			d=a[e];
			if(this.indexOfId(d.id)>-1){
				this.doUpdate(d)
				}else{
				l.push(d);
				++c
				}
			}
		this.totalLength=Math.max(k,this.data.length+c);
	this.add(l)
	}
	this.fireEvent("load",this,a,m);
if(m.callback){
	m.callback.call(m.scope||this,a,m,true)
	}
},
loadData:function(c,a){
	var b=this.reader.readRecords(c);
	this.loadRecords(b,{
		add:a
	},true)
	},
getCount:function(){
	return this.data.length||0
	},
getTotalCount:function(){
	return this.totalLength||0
	},
getSortState:function(){
	return this.sortInfo
	},
applySort:function(){
	if((this.sortInfo||this.multiSortInfo)&&!this.remoteSort){
		this.sortData()
		}
	},
sortData:function(){
	var a=this.hasMultiSort?this.multiSortInfo:this.sortInfo,k=a.direction||"ASC",h=a.sorters,c=[];
	if(!this.hasMultiSort){
		h=[{
			direction:k,
			field:a.field
			}]
		}
		for(var d=0,b=h.length;d<b;d++){
		c.push(this.createSortFunction(h[d].field,h[d].direction))
		}
		if(c.length==0){
		return
	}
	var g=k.toUpperCase()=="DESC"?-1:1;
	var e=function(n,m){
		var l=c[0].call(this,n,m);
		if(c.length>1){
			for(var p=1,o=c.length;p<o;p++){
				l=l||c[p].call(this,n,m)
				}
			}
			return g*l
	};

this.data.sort(k,e);
if(this.snapshot&&this.snapshot!=this.data){
	this.snapshot.sort(k,e)
	}
},
createSortFunction:function(c,b){
	b=b||"ASC";
	var a=b.toUpperCase()=="DESC"?-1:1;
	var d=this.fields.get(c).sortType;
	return function(g,e){
		var i=d(g.data[c]),h=d(e.data[c]);
		return a*(i>h?1:(i<h?-1:0))
		}
	},
setDefaultSort:function(b,a){
	a=a?a.toUpperCase():"ASC";
	this.sortInfo={
		field:b,
		direction:a
	};

	this.sortToggle[b]=a
	},
sort:function(b,a){
	if(Ext.isArray(arguments[0])){
		return this.multiSort.call(this,b,a)
		}else{
		return this.singleSort(b,a)
		}
	},
singleSort:function(g,c){
	var e=this.fields.get(g);
	if(!e){
		return false
		}
		var b=e.name,a=this.sortInfo||null,d=this.sortToggle?this.sortToggle[b]:null;
	if(!c){
		if(a&&a.field==b){
			c=(this.sortToggle[b]||"ASC").toggle("ASC","DESC")
			}else{
			c=e.sortDir
			}
		}
	this.sortToggle[b]=c;
this.sortInfo={
	field:b,
	direction:c
};

this.hasMultiSort=false;
if(this.remoteSort){
	if(!this.load(this.lastOptions)){
		if(d){
			this.sortToggle[b]=d
			}
			if(a){
			this.sortInfo=a
			}
		}
}else{
	this.applySort();
	this.fireEvent("datachanged",this)
	}
	return true
},
multiSort:function(b,a){
	this.hasMultiSort=true;
	a=a||"ASC";
	if(this.multiSortInfo&&a==this.multiSortInfo.direction){
		a=a.toggle("ASC","DESC")
		}
		this.multiSortInfo={
		sorters:b,
		direction:a
	};

	if(this.remoteSort){
		this.singleSort(b[0].field,b[0].direction)
		}else{
		this.applySort();
		this.fireEvent("datachanged",this)
		}
	},
each:function(b,a){
	this.data.each(b,a)
	},
getModifiedRecords:function(){
	return this.modified
	},
sum:function(e,g,a){
	var c=this.data.items,b=0;
	g=g||0;
	a=(a||a===0)?a:c.length-1;
	for(var d=g;d<=a;d++){
		b+=(c[d].data[e]||0)
		}
		return b
	},
createFilterFn:function(d,c,e,a,b){
	if(Ext.isEmpty(c,false)){
		return false
		}
		c=this.data.createValueMatcher(c,e,a,b);
	return function(g){
		return c.test(g.data[d])
		}
	},
createMultipleFilterFn:function(a){
	return function(b){
		var k=true;
		for(var d=0,c=a.length;d<c;d++){
			var h=a[d],g=h.fn,e=h.scope;
			k=k&&g.call(e,b)
			}
			return k
		}
	},
filter:function(n,m,h,k,e){
	var l;
	if(Ext.isObject(n)){
		n=[n]
		}
		if(Ext.isArray(n)){
		var b=[];
		for(var g=0,d=n.length;g<d;g++){
			var a=n[g],c=a.fn,o=a.scope||this;
			if(!Ext.isFunction(c)){
				c=this.createFilterFn(a.property,a.value,a.anyMatch,a.caseSensitive,a.exactMatch)
				}
				b.push({
				fn:c,
				scope:o
			})
			}
			l=this.createMultipleFilterFn(b)
		}else{
		l=this.createFilterFn(n,m,h,k,e)
		}
		return l?this.filterBy(l):this.clearFilter()
	},
filterBy:function(b,a){
	this.snapshot=this.snapshot||this.data;
	this.data=this.queryBy(b,a||this);
	this.fireEvent("datachanged",this)
	},
clearFilter:function(a){
	if(this.isFiltered()){
		this.data=this.snapshot;
		delete this.snapshot;
		if(a!==true){
			this.fireEvent("datachanged",this)
			}
		}
},
isFiltered:function(){
	return !!this.snapshot&&this.snapshot!=this.data
	},
query:function(d,c,e,a){
	var b=this.createFilterFn(d,c,e,a);
	return b?this.queryBy(b):this.data.clone()
	},
queryBy:function(b,a){
	var c=this.snapshot||this.data;
	return c.filterBy(b,a||this)
	},
find:function(d,c,g,e,a){
	var b=this.createFilterFn(d,c,e,a);
	return b?this.data.findIndexBy(b,null,g):-1
	},
findExact:function(b,a,c){
	return this.data.findIndexBy(function(d){
		return d.get(b)===a
		},this,c)
	},
findBy:function(b,a,c){
	return this.data.findIndexBy(b,a,c)
	},
collect:function(k,m,b){
	var h=(b===true&&this.snapshot)?this.snapshot.items:this.data.items;
	var n,o,a=[],c={};

	for(var e=0,g=h.length;e<g;e++){
		n=h[e].data[k];
		o=String(n);
		if((m||!Ext.isEmpty(n))&&!c[o]){
			c[o]=true;
			a[a.length]=n
			}
		}
	return a
},
afterEdit:function(a){
	if(this.modified.indexOf(a)==-1){
		this.modified.push(a)
		}
		this.fireEvent("update",this,a,Ext.data.Record.EDIT)
	},
afterReject:function(a){
	this.modified.remove(a);
	this.fireEvent("update",this,a,Ext.data.Record.REJECT)
	},
afterCommit:function(a){
	this.modified.remove(a);
	this.fireEvent("update",this,a,Ext.data.Record.COMMIT)
	},
commitChanges:function(){
	var a=this.modified.slice(0),c=a.length,b;
	for(b=0;b<c;b++){
		a[b].commit()
		}
		this.modified=[];
	this.removed=[]
	},
rejectChanges:function(){
	var a=this.modified.slice(0),e=this.removed.slice(0).reverse(),c=a.length,d=e.length,b;
	for(b=0;b<c;b++){
		a[b].reject()
		}
		for(b=0;b<d;b++){
		this.insert(e[b].lastIndex||0,e[b]);
		e[b].reject()
		}
		this.modified=[];
	this.removed=[]
	},
onMetaChange:function(a){
	this.recordType=this.reader.recordType;
	this.fields=this.recordType.prototype.fields;
	delete this.snapshot;
	if(this.reader.meta.sortInfo){
		this.sortInfo=this.reader.meta.sortInfo
		}else{
		if(this.sortInfo&&!this.fields.get(this.sortInfo.field)){
			delete this.sortInfo
			}
		}
	if(this.writer){
	this.writer.meta=this.reader.meta
	}
	this.modified=[];
this.fireEvent("metachange",this,this.reader.meta)
},
findInsertIndex:function(a){
	this.suspendEvents();
	var c=this.data.clone();
	this.data.add(a);
	this.applySort();
	var b=this.data.indexOf(a);
	this.data=c;
	this.resumeEvents();
	return b
	},
setBaseParam:function(a,b){
	this.baseParams=this.baseParams||{};

	this.baseParams[a]=b
	}
});
Ext.reg("store",Ext.data.Store);
Ext.data.Store.Error=Ext.extend(Ext.Error,{
	name:"Ext.data.Store"
});
Ext.apply(Ext.data.Store.Error.prototype,{
	lang:{
		"writer-undefined":"Attempted to execute a write-action without a DataWriter installed."
	}
});
Ext.data.Field=Ext.extend(Object,{
	constructor:function(b){
		if(Ext.isString(b)){
			b={
				name:b
			}
		}
		Ext.apply(this,b);
	var d=Ext.data.Types,a=this.sortType,c;
	if(this.type){
		if(Ext.isString(this.type)){
			this.type=Ext.data.Types[this.type.toUpperCase()]||d.AUTO
			}
		}else{
	this.type=d.AUTO
	}
	if(Ext.isString(a)){
	this.sortType=Ext.data.SortTypes[a]
	}else{
	if(Ext.isEmpty(a)){
		this.sortType=this.type.sortType
		}
	}
if(!this.convert){
	this.convert=this.type.convert
	}
},
dateFormat:null,
useNull:false,
defaultValue:"",
mapping:null,
sortType:null,
sortDir:"ASC",
allowBlank:true
});
Ext.data.DataReader=function(a,b){
	this.meta=a;
	this.recordType=Ext.isArray(b)?Ext.data.Record.create(b):b;
	if(this.recordType){
		this.buildExtractors()
		}
	};

Ext.data.DataReader.prototype={
	getTotal:Ext.emptyFn,
	getRoot:Ext.emptyFn,
	getMessage:Ext.emptyFn,
	getSuccess:Ext.emptyFn,
	getId:Ext.emptyFn,
	buildExtractors:Ext.emptyFn,
	extractValues:Ext.emptyFn,
	realize:function(a,c){
		if(Ext.isArray(a)){
			for(var b=a.length-1;b>=0;b--){
				if(Ext.isArray(c)){
					this.realize(a.splice(b,1).shift(),c.splice(b,1).shift())
					}else{
					this.realize(a.splice(b,1).shift(),c)
					}
				}
			}else{
	if(Ext.isArray(c)&&c.length==1){
		c=c.shift()
		}
		if(!this.isData(c)){
		throw new Ext.data.DataReader.Error("realize",a)
		}
		a.phantom=false;
	a._phid=a.id;
	a.id=this.getId(c);
	a.data=c;
	a.commit()
	}
},
update:function(a,c){
	if(Ext.isArray(a)){
		for(var b=a.length-1;b>=0;b--){
			if(Ext.isArray(c)){
				this.update(a.splice(b,1).shift(),c.splice(b,1).shift())
				}else{
				this.update(a.splice(b,1).shift(),c)
				}
			}
		}else{
	if(Ext.isArray(c)&&c.length==1){
		c=c.shift()
		}
		if(this.isData(c)){
		a.data=Ext.apply(a.data,c)
		}
		a.commit()
	}
},
extractData:function(l,a){
	var k=(this instanceof Ext.data.JsonReader)?"json":"node";
	var c=[];
	if(this.isData(l)&&!(this instanceof Ext.data.XmlReader)){
		l=[l]
		}
		var h=this.recordType.prototype.fields,p=h.items,o=h.length,c=[];
	if(a===true){
		var m=this.recordType;
		for(var e=0;e<l.length;e++){
			var b=l[e];
			var g=new m(this.extractValues(b,p,o),this.getId(b));
			g[k]=b;
			c.push(g)
			}
		}else{
	for(var e=0;e<l.length;e++){
		var d=this.extractValues(l[e],p,o);
		d[this.meta.idProperty]=this.getId(l[e]);
		c.push(d)
		}
	}
	return c
},
isData:function(a){
	return(a&&Ext.isObject(a)&&!Ext.isEmpty(this.getId(a)))?true:false
	},
onMetaChange:function(a){
	delete this.ef;
	this.meta=a;
	this.recordType=Ext.data.Record.create(a.fields);
	this.buildExtractors()
	}
};

Ext.data.DataReader.Error=Ext.extend(Ext.Error,{
	constructor:function(b,a){
		this.arg=a;
		Ext.Error.call(this,b)
		},
	name:"Ext.data.DataReader"
});
Ext.apply(Ext.data.DataReader.Error.prototype,{
	lang:{
		update:"#update received invalid data from server.  Please see docs for DataReader#update and review your DataReader configuration.",
		realize:"#realize was called with invalid remote-data.  Please see the docs for DataReader#realize and review your DataReader configuration.",
		"invalid-response":"#readResponse received an invalid response from the server."
	}
});
Ext.data.DataWriter=function(a){
	Ext.apply(this,a)
	};

Ext.data.DataWriter.prototype={
	writeAllFields:false,
	listful:false,
	apply:function(e,g,d,a){
		var c=[],b=d+"Record";
		if(Ext.isArray(a)){
			Ext.each(a,function(h){
				c.push(this[b](h))
				},this)
			}else{
			if(a instanceof Ext.data.Record){
				c=this[b](a)
				}
			}
		this.render(e,g,c)
	},
render:Ext.emptyFn,
updateRecord:Ext.emptyFn,
createRecord:Ext.emptyFn,
destroyRecord:Ext.emptyFn,
toHash:function(g,c){
	var e=g.fields.map,d={},b=(this.writeAllFields===false&&g.phantom===false)?g.getChanges():g.data,a;
	Ext.iterate(b,function(i,h){
		if((a=e[i])){
			d[a.mapping?a.mapping:a.name]=h
			}
		});
if(g.phantom){
	if(g.fields.containsKey(this.meta.idProperty)&&Ext.isEmpty(g.data[this.meta.idProperty])){
		delete d[this.meta.idProperty]
	}
}else{
	d[this.meta.idProperty]=g.id
	}
	return d
},
toArray:function(b){
	var a=[];
	Ext.iterate(b,function(d,c){
		a.push({
			name:d,
			value:c
		})
		},this);
	return a
	}
};

Ext.data.DataProxy=function(a){
	a=a||{};

	this.api=a.api;
	this.url=a.url;
	this.restful=a.restful;
	this.listeners=a.listeners;
	this.prettyUrls=a.prettyUrls;
	this.addEvents("exception","beforeload","load","loadexception","beforewrite","write");
	Ext.data.DataProxy.superclass.constructor.call(this);
	try{
		Ext.data.Api.prepare(this)
		}catch(b){
		if(b instanceof Ext.data.Api.Error){
			b.toConsole()
			}
		}
	Ext.data.DataProxy.relayEvents(this,["beforewrite","write","exception"])
	};

Ext.extend(Ext.data.DataProxy,Ext.util.Observable,{
	restful:false,
	setApi:function(){
		if(arguments.length==1){
			var a=Ext.data.Api.isValid(arguments[0]);
			if(a===true){
				this.api=arguments[0]
				}else{
				throw new Ext.data.Api.Error("invalid",a)
				}
			}else{
		if(arguments.length==2){
			if(!Ext.data.Api.isAction(arguments[0])){
				throw new Ext.data.Api.Error("invalid",arguments[0])
				}
				this.api[arguments[0]]=arguments[1]
			}
		}
	Ext.data.Api.prepare(this)
	},
isApiAction:function(a){
	return(this.api[a])?true:false
	},
request:function(e,b,g,a,h,d,c){
	if(!this.api[e]&&!this.load){
		throw new Ext.data.DataProxy.Error("action-undefined",e)
		}
		g=g||{};

	if((e===Ext.data.Api.actions.read)?this.fireEvent("beforeload",this,g):this.fireEvent("beforewrite",this,e,b,g)!==false){
		this.doRequest.apply(this,arguments)
		}else{
		h.call(d||this,null,c,false)
		}
	},
load:null,
doRequest:function(e,b,g,a,h,d,c){
	this.load(g,a,h,d,c)
	},
onRead:Ext.emptyFn,
onWrite:Ext.emptyFn,
buildUrl:function(d,b){
	b=b||null;
	var c=(this.conn&&this.conn.url)?this.conn.url:(this.api[d])?this.api[d].url:this.url;
	if(!c){
		throw new Ext.data.Api.Error("invalid-url",d)
		}
		var e=null;
	var a=c.match(/(.*)(\.json|\.xml|\.html)$/);
	if(a){
		e=a[2];
		c=a[1]
		}
		if((this.restful===true||this.prettyUrls===true)&&b instanceof Ext.data.Record&&!b.phantom){
		c+="/"+b.id
		}
		return(e===null)?c:c+e
	},
destroy:function(){
	this.purgeListeners()
	}
});
Ext.apply(Ext.data.DataProxy,Ext.util.Observable.prototype);
Ext.util.Observable.call(Ext.data.DataProxy);
Ext.data.DataProxy.Error=Ext.extend(Ext.Error,{
	constructor:function(b,a){
		this.arg=a;
		Ext.Error.call(this,b)
		},
	name:"Ext.data.DataProxy"
});
Ext.apply(Ext.data.DataProxy.Error.prototype,{
	lang:{
		"action-undefined":"DataProxy attempted to execute an API-action but found an undefined url / function.  Please review your Proxy url/api-configuration.",
		"api-invalid":"Recieved an invalid API-configuration.  Please ensure your proxy API-configuration contains only the actions from Ext.data.Api.actions."
	}
});
Ext.data.Request=function(a){
	Ext.apply(this,a)
	};

Ext.data.Request.prototype={
	action:undefined,
	rs:undefined,
	params:undefined,
	callback:Ext.emptyFn,
	scope:undefined,
	reader:undefined
};

Ext.data.Response=function(a){
	Ext.apply(this,a)
	};

Ext.data.Response.prototype={
	action:undefined,
	success:undefined,
	message:undefined,
	data:undefined,
	raw:undefined,
	records:undefined
};

Ext.data.ScriptTagProxy=function(a){
	Ext.apply(this,a);
	Ext.data.ScriptTagProxy.superclass.constructor.call(this,a);
	this.head=document.getElementsByTagName("head")[0]
	};

Ext.data.ScriptTagProxy.TRANS_ID=1000;
Ext.extend(Ext.data.ScriptTagProxy,Ext.data.DataProxy,{
	timeout:30000,
	callbackParam:"callback",
	nocache:true,
	doRequest:function(e,g,d,h,k,l,m){
		var c=Ext.urlEncode(Ext.apply(d,this.extraParams));
		var b=this.buildUrl(e,g);
		if(!b){
			throw new Ext.data.Api.Error("invalid-url",b)
			}
			b=Ext.urlAppend(b,c);
		if(this.nocache){
			b=Ext.urlAppend(b,"_dc="+(new Date().getTime()))
			}
			var a=++Ext.data.ScriptTagProxy.TRANS_ID;
		var n={
			id:a,
			action:e,
			cb:"stcCallback"+a,
			scriptId:"stcScript"+a,
			params:d,
			arg:m,
			url:b,
			callback:k,
			scope:l,
			reader:h
		};

		window[n.cb]=this.createCallback(e,g,n);
		b+=String.format("&{0}={1}",this.callbackParam,n.cb);
		if(this.autoAbort!==false){
			this.abort()
			}
			n.timeoutId=this.handleFailure.defer(this.timeout,this,[n]);
		var i=document.createElement("script");
		i.setAttribute("src",b);
		i.setAttribute("type","text/javascript");
		i.setAttribute("id",n.scriptId);
		this.head.appendChild(i);
		this.trans=n
		},
	createCallback:function(d,b,c){
		var a=this;
		return function(e){
			a.trans=false;
			a.destroyTrans(c,true);
			if(d===Ext.data.Api.actions.read){
				a.onRead.call(a,d,c,e)
				}else{
				a.onWrite.call(a,d,c,e,b)
				}
			}
	},
onRead:function(d,c,b){
	var a;
	try{
		a=c.reader.readRecords(b)
		}catch(g){
		this.fireEvent("loadexception",this,c,b,g);
		this.fireEvent("exception",this,"response",d,c,b,g);
		c.callback.call(c.scope||window,null,c.arg,false);
		return
	}
	if(a.success===false){
		this.fireEvent("loadexception",this,c,b);
		this.fireEvent("exception",this,"remote",d,c,b,null)
		}else{
		this.fireEvent("load",this,b,c.arg)
		}
		c.callback.call(c.scope||window,a,c.arg,a.success)
	},
onWrite:function(h,g,c,b){
	var a=g.reader;
	try{
		var d=a.readResponse(h,c)
		}catch(i){
		this.fireEvent("exception",this,"response",h,g,d,i);
		g.callback.call(g.scope||window,null,d,false);
		return
	}
	if(!d.success===true){
		this.fireEvent("exception",this,"remote",h,g,d,b);
		g.callback.call(g.scope||window,null,d,false);
		return
	}
	this.fireEvent("write",this,h,d.data,d,b,g.arg);
	g.callback.call(g.scope||window,d.data,d,true)
	},
isLoading:function(){
	return this.trans?true:false
	},
abort:function(){
	if(this.isLoading()){
		this.destroyTrans(this.trans)
		}
	},
destroyTrans:function(b,a){
	this.head.removeChild(document.getElementById(b.scriptId));
	clearTimeout(b.timeoutId);
	if(a){
		window[b.cb]=undefined;
		try{
			delete window[b.cb]
		}catch(c){}
	}else{
	window[b.cb]=function(){
		window[b.cb]=undefined;
		try{
			delete window[b.cb]
		}catch(d){}
	}
}
},
handleFailure:function(a){
	this.trans=false;
	this.destroyTrans(a,false);
	if(a.action===Ext.data.Api.actions.read){
		this.fireEvent("loadexception",this,null,a.arg)
		}
		this.fireEvent("exception",this,"response",a.action,{
		response:null,
		options:a.arg
		});
	a.callback.call(a.scope||window,null,a.arg,false)
	},
destroy:function(){
	this.abort();
	Ext.data.ScriptTagProxy.superclass.destroy.call(this)
	}
});
Ext.data.HttpProxy=function(a){
	Ext.data.HttpProxy.superclass.constructor.call(this,a);
	this.conn=a;
	this.conn.url=null;
	this.useAjax=!a||!a.events;
	var c=Ext.data.Api.actions;
	this.activeRequest={};

	for(var b in c){
		this.activeRequest[c[b]]=undefined
		}
	};

Ext.extend(Ext.data.HttpProxy,Ext.data.DataProxy,{
	getConnection:function(){
		return this.useAjax?Ext.Ajax:this.conn
		},
	setUrl:function(a,b){
		this.conn.url=a;
		if(b===true){
			this.url=a;
			this.api=null;
			Ext.data.Api.prepare(this)
			}
		},
doRequest:function(g,d,i,c,b,e,a){
	var h={
		method:(this.api[g])?this.api[g]["method"]:undefined,
		request:{
			callback:b,
			scope:e,
			arg:a
		},
		reader:c,
		callback:this.createCallback(g,d),
		scope:this
	};

	if(i.jsonData){
		h.jsonData=i.jsonData
		}else{
		if(i.xmlData){
			h.xmlData=i.xmlData
			}else{
			h.params=i||{}
		}
	}
this.conn.url=this.buildUrl(g,d);
	if(this.useAjax){
	Ext.applyIf(h,this.conn);
	if(this.activeRequest[g]){}
	this.activeRequest[g]=Ext.Ajax.request(h)
	}else{
	this.conn.request(h)
	}
	this.conn.url=null
},
createCallback:function(b,a){
	return function(e,d,c){
		this.activeRequest[b]=undefined;
		if(!d){
			if(b===Ext.data.Api.actions.read){
				this.fireEvent("loadexception",this,e,c)
				}
				this.fireEvent("exception",this,"response",b,e,c);
			e.request.callback.call(e.request.scope,null,e.request.arg,false);
			return
		}
		if(b===Ext.data.Api.actions.read){
			this.onRead(b,e,c)
			}else{
			this.onWrite(b,e,c,a)
			}
		}
},
onRead:function(d,h,b){
	var a;
	try{
		a=h.reader.read(b)
		}catch(g){
		this.fireEvent("loadexception",this,h,b,g);
		this.fireEvent("exception",this,"response",d,h,b,g);
		h.request.callback.call(h.request.scope,null,h.request.arg,false);
		return
	}
	if(a.success===false){
		this.fireEvent("loadexception",this,h,b);
		var c=h.reader.readResponse(d,b);
		this.fireEvent("exception",this,"remote",d,h,c,null)
		}else{
		this.fireEvent("load",this,h,h.request.arg)
		}
		h.request.callback.call(h.request.scope,a,h.request.arg,a.success)
	},
onWrite:function(g,i,c,b){
	var a=i.reader;
	var d;
	try{
		d=a.readResponse(g,c)
		}catch(h){
		this.fireEvent("exception",this,"response",g,i,c,h);
		i.request.callback.call(i.request.scope,null,i.request.arg,false);
		return
	}
	if(d.success===true){
		this.fireEvent("write",this,g,d.data,d,b,i.request.arg)
		}else{
		this.fireEvent("exception",this,"remote",g,i,d,b)
		}
		i.request.callback.call(i.request.scope,d.data,d,d.success)
	},
destroy:function(){
	if(!this.useAjax){
		this.conn.abort()
		}else{
		if(this.activeRequest){
			var b=Ext.data.Api.actions;
			for(var a in b){
				if(this.activeRequest[b[a]]){
					Ext.Ajax.abort(this.activeRequest[b[a]])
					}
				}
			}
		}
Ext.data.HttpProxy.superclass.destroy.call(this)
}
});
Ext.data.MemoryProxy=function(b){
	var a={};

	a[Ext.data.Api.actions.read]=true;
	Ext.data.MemoryProxy.superclass.constructor.call(this,{
		api:a
	});
	this.data=b
	};

Ext.extend(Ext.data.MemoryProxy,Ext.data.DataProxy,{
	doRequest:function(b,c,a,d,h,i,k){
		a=a||{};

		var l;
		try{
			l=d.readRecords(this.data)
			}catch(g){
			this.fireEvent("loadexception",this,null,k,g);
			this.fireEvent("exception",this,"response",b,k,null,g);
			h.call(i,null,k,false);
			return
		}
		h.call(i,l,k,true)
		}
	});
Ext.data.Types=new function(){
	var a=Ext.data.SortTypes;
	Ext.apply(this,{
		stripRe:/[\$,%]/g,
		AUTO:{
			convert:function(b){
				return b
				},
			sortType:a.none,
			type:"auto"
		},
		STRING:{
			convert:function(b){
				return(b===undefined||b===null)?"":String(b)
				},
			sortType:a.asUCString,
			type:"string"
		},
		INT:{
			convert:function(b){
				return b!==undefined&&b!==null&&b!==""?parseInt(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)
				},
			sortType:a.none,
			type:"int"
		},
		FLOAT:{
			convert:function(b){
				return b!==undefined&&b!==null&&b!==""?parseFloat(String(b).replace(Ext.data.Types.stripRe,""),10):(this.useNull?null:0)
				},
			sortType:a.none,
			type:"float"
		},
		BOOL:{
			convert:function(b){
				return b===true||b==="true"||b==1
				},
			sortType:a.none,
			type:"bool"
		},
		DATE:{
			convert:function(c){
				var d=this.dateFormat;
				if(!c){
					return null
					}
					if(Ext.isDate(c)){
					return c
					}
					if(d){
					if(d=="timestamp"){
						return new Date(c*1000)
						}
						if(d=="time"){
						return new Date(parseInt(c,10))
						}
						return Date.parseDate(c,d)
					}
					var b=Date.parse(c);
				return b?new Date(b):null
				},
			sortType:a.asDate,
			type:"date"
		}
	});
Ext.apply(this,{
	BOOLEAN:this.BOOL,
	INTEGER:this.INT,
	NUMBER:this.FLOAT
	})
};

Ext.data.JsonWriter=Ext.extend(Ext.data.DataWriter,{
	encode:true,
	encodeDelete:false,
	constructor:function(a){
		Ext.data.JsonWriter.superclass.constructor.call(this,a)
		},
	render:function(c,d,b){
		if(this.encode===true){
			Ext.apply(c,d);
			c[this.meta.root]=Ext.encode(b)
			}else{
			var a=Ext.apply({},d);
			a[this.meta.root]=b;
			c.jsonData=a
			}
		},
createRecord:function(a){
	return this.toHash(a)
	},
updateRecord:function(a){
	return this.toHash(a)
	},
destroyRecord:function(b){
	if(this.encodeDelete){
		var a={};

		a[this.meta.idProperty]=b.id;
		return a
		}else{
		return b.id
		}
	}
});
Ext.data.JsonReader=function(a,b){
	a=a||{};

	Ext.applyIf(a,{
		idProperty:"id",
		successProperty:"success",
		totalProperty:"total"
	});
	Ext.data.JsonReader.superclass.constructor.call(this,a,b||a.fields)
	};

Ext.extend(Ext.data.JsonReader,Ext.data.DataReader,{
	read:function(a){
		var b=a.responseText;
		var c=Ext.decode(b);
		if(!c){
			throw {
				message:"JsonReader.read: Json object not found"
			}
		}
		return this.readRecords(c)
	},
readResponse:function(e,b){
	var g=(b.responseText!==undefined)?Ext.decode(b.responseText):b;
	if(!g){
		throw new Ext.data.JsonReader.Error("response")
		}
		var a=this.getRoot(g);
	if(e===Ext.data.Api.actions.create){
		var d=Ext.isDefined(a);
		if(d&&Ext.isEmpty(a)){
			throw new Ext.data.JsonReader.Error("root-empty",this.meta.root)
			}else{
			if(!d){
				throw new Ext.data.JsonReader.Error("root-undefined-response",this.meta.root)
				}
			}
	}
var c=new Ext.data.Response({
	action:e,
	success:this.getSuccess(g),
	data:(a)?this.extractData(a,false):[],
	message:this.getMessage(g),
	raw:g
});
if(Ext.isEmpty(c.success)){
	throw new Ext.data.JsonReader.Error("successProperty-response",this.meta.successProperty)
	}
	return c
},
readRecords:function(a){
	this.jsonData=a;
	if(a.metaData){
		this.onMetaChange(a.metaData)
		}
		var n=this.meta,h=this.recordType,b=h.prototype.fields,m=b.items,i=b.length,k;
	var g=this.getRoot(a),e=g.length,d=e,l=true;
	if(n.totalProperty){
		k=parseInt(this.getTotal(a),10);
		if(!isNaN(k)){
			d=k
			}
		}
	if(n.successProperty){
	k=this.getSuccess(a);
	if(k===false||k==="false"){
		l=false
		}
	}
return{
	success:l,
	records:this.extractData(g,true),
	totalRecords:d
}
},
buildExtractors:function(){
	if(this.ef){
		return
	}
	var m=this.meta,h=this.recordType,e=h.prototype.fields,l=e.items,k=e.length;
	if(m.totalProperty){
		this.getTotal=this.createAccessor(m.totalProperty)
		}
		if(m.successProperty){
		this.getSuccess=this.createAccessor(m.successProperty)
		}
		if(m.messageProperty){
		this.getMessage=this.createAccessor(m.messageProperty)
		}
		this.getRoot=m.root?this.createAccessor(m.root):function(g){
		return g
		};

	if(m.id||m.idProperty){
		var d=this.createAccessor(m.id||m.idProperty);
		this.getId=function(i){
			var g=d(i);
			return(g===undefined||g==="")?null:g
			}
		}else{
	this.getId=function(){
		return null
		}
	}
var c=[];
for(var b=0;b<k;b++){
	e=l[b];
	var a=(e.mapping!==undefined&&e.mapping!==null)?e.mapping:e.name;
	c.push(this.createAccessor(a))
	}
	this.ef=c
},
simpleAccess:function(b,a){
	return b[a]
	},
createAccessor:function(){
	var a=/[\[\.]/;
	return function(c){
		if(Ext.isEmpty(c)){
			return Ext.emptyFn
			}
			if(Ext.isFunction(c)){
			return c
			}
			var b=String(c).search(a);
		if(b>=0){
			return new Function("obj","return obj"+(b>0?".":"")+c)
			}
			return function(d){
			return d[c]
			}
		}
}(),
extractValues:function(h,d,a){
	var g,c={};

	for(var e=0;e<a;e++){
		g=d[e];
		var b=this.ef[e](h);
		c[g.name]=g.convert((b!==undefined)?b:g.defaultValue,h)
		}
		return c
	}
});
Ext.data.JsonReader.Error=Ext.extend(Ext.Error,{
	constructor:function(b,a){
		this.arg=a;
		Ext.Error.call(this,b)
		},
	name:"Ext.data.JsonReader"
});
Ext.apply(Ext.data.JsonReader.Error.prototype,{
	lang:{
		response:"An error occurred while json-decoding your server response",
		"successProperty-response":'Could not locate your "successProperty" in your server response.  Please review your JsonReader config to ensure the config-property "successProperty" matches the property in your server-response.  See the JsonReader docs.',
		"root-undefined-config":'Your JsonReader was configured without a "root" property.  Please review your JsonReader config and make sure to define the root property.  See the JsonReader docs.',
		"idProperty-undefined":'Your JsonReader was configured without an "idProperty"  Please review your JsonReader configuration and ensure the "idProperty" is set (e.g.: "id").  See the JsonReader docs.',
		"root-empty":'Data was expected to be returned by the server in the "root" property of the response.  Please review your JsonReader configuration to ensure the "root" property matches that returned in the server-response.  See JsonReader docs.'
	}
});
Ext.data.ArrayReader=Ext.extend(Ext.data.JsonReader,{
	readRecords:function(r){
		this.arrayData=r;
		var l=this.meta,d=l?Ext.num(l.idIndex,l.id):null,b=this.recordType,q=b.prototype.fields,z=[],e=true,g;
		var u=this.getRoot(r);
		for(var y=0,A=u.length;y<A;y++){
			var t=u[y],a={},p=((d||d===0)&&t[d]!==undefined&&t[d]!==""?t[d]:null);
			for(var x=0,m=q.length;x<m;x++){
				var B=q.items[x],w=B.mapping!==undefined&&B.mapping!==null?B.mapping:x;
				g=t[w]!==undefined?t[w]:B.defaultValue;
				g=B.convert(g,t);
				a[B.name]=g
				}
				var c=new b(a,p);
			c.json=t;
			z[z.length]=c
			}
			var h=z.length;
		if(l.totalProperty){
			g=parseInt(this.getTotal(r),10);
			if(!isNaN(g)){
				h=g
				}
			}
		if(l.successProperty){
		g=this.getSuccess(r);
		if(g===false||g==="false"){
			e=false
			}
		}
	return{
	success:e,
	records:z,
	totalRecords:h
}
}
});
Ext.data.ArrayStore=Ext.extend(Ext.data.Store,{
	constructor:function(a){
		Ext.data.ArrayStore.superclass.constructor.call(this,Ext.apply(a,{
			reader:new Ext.data.ArrayReader(a)
			}))
		},
	loadData:function(e,b){
		if(this.expandData===true){
			var d=[];
			for(var c=0,a=e.length;c<a;c++){
				d[d.length]=[e[c]]
				}
				e=d
			}
			Ext.data.ArrayStore.superclass.loadData.call(this,e,b)
		}
	});
Ext.reg("arraystore",Ext.data.ArrayStore);
Ext.data.SimpleStore=Ext.data.ArrayStore;
Ext.reg("simplestore",Ext.data.SimpleStore);
Ext.data.JsonStore=Ext.extend(Ext.data.Store,{
	constructor:function(a){
		Ext.data.JsonStore.superclass.constructor.call(this,Ext.apply(a,{
			reader:new Ext.data.JsonReader(a)
			}))
		}
	});
Ext.reg("jsonstore",Ext.data.JsonStore);
Ext.data.XmlWriter=function(a){
	Ext.data.XmlWriter.superclass.constructor.apply(this,arguments);
	this.tpl=(typeof(this.tpl)==="string")?new Ext.XTemplate(this.tpl).compile():this.tpl.compile()
	};

Ext.extend(Ext.data.XmlWriter,Ext.data.DataWriter,{
	documentRoot:"xrequest",
	forceDocumentRoot:false,
	root:"records",
	xmlVersion:"1.0",
	xmlEncoding:"ISO-8859-15",
	tpl:'<tpl for="."><\u003fxml version="{version}" encoding="{encoding}"\u003f><tpl if="documentRoot"><{documentRoot}><tpl for="baseParams"><tpl for="."><{name}>{value}</{name}></tpl></tpl></tpl><tpl if="records.length&gt;1"><{root}></tpl><tpl for="records"><{parent.record}><tpl for="."><{name}>{value}</{name}></tpl></{parent.record}></tpl><tpl if="records.length&gt;1"></{root}></tpl><tpl if="documentRoot"></{documentRoot}></tpl></tpl>',
	render:function(b,c,a){
		c=this.toArray(c);
		b.xmlData=this.tpl.applyTemplate({
			version:this.xmlVersion,
			encoding:this.xmlEncoding,
			documentRoot:(c.length>0||this.forceDocumentRoot===true)?this.documentRoot:false,
			record:this.meta.record,
			root:this.root,
			baseParams:c,
			records:(Ext.isArray(a[0]))?a:[a]
			})
		},
	createRecord:function(a){
		return this.toArray(this.toHash(a))
		},
	updateRecord:function(a){
		return this.toArray(this.toHash(a))
		},
	destroyRecord:function(b){
		var a={};

		a[this.meta.idProperty]=b.id;
		return this.toArray(a)
		}
	});
Ext.data.XmlReader=function(a,b){
	a=a||{};

	Ext.applyIf(a,{
		idProperty:a.idProperty||a.idPath||a.id,
		successProperty:a.successProperty||a.success
		});
	Ext.data.XmlReader.superclass.constructor.call(this,a,b||a.fields)
	};

Ext.extend(Ext.data.XmlReader,Ext.data.DataReader,{
	read:function(a){
		var b=a.responseXML;
		if(!b){
			throw {
				message:"XmlReader.read: XML Document not available"
			}
		}
		return this.readRecords(b)
	},
readRecords:function(d){
	this.xmlData=d;
	var a=d.documentElement||d,c=Ext.DomQuery,g=0,e=true;
	if(this.meta.totalProperty){
		g=this.getTotal(a,0)
		}
		if(this.meta.successProperty){
		e=this.getSuccess(a)
		}
		var b=this.extractData(c.select(this.meta.record,a),true);
	return{
		success:e,
		records:b,
		totalRecords:g||b.length
		}
	},
readResponse:function(g,b){
	var e=Ext.DomQuery,h=b.responseXML,a=h.documentElement||h;
	var c=new Ext.data.Response({
		action:g,
		success:this.getSuccess(a),
		message:this.getMessage(a),
		data:this.extractData(e.select(this.meta.record,a)||e.select(this.meta.root,a),false),
		raw:h
	});
	if(Ext.isEmpty(c.success)){
		throw new Ext.data.DataReader.Error("successProperty-response",this.meta.successProperty)
		}
		if(g===Ext.data.Api.actions.create){
		var d=Ext.isDefined(c.data);
		if(d&&Ext.isEmpty(c.data)){
			throw new Ext.data.JsonReader.Error("root-empty",this.meta.root)
			}else{
			if(!d){
				throw new Ext.data.JsonReader.Error("root-undefined-response",this.meta.root)
				}
			}
	}
return c
},
getSuccess:function(){
	return true
	},
buildExtractors:function(){
	if(this.ef){
		return
	}
	var m=this.meta,h=this.recordType,e=h.prototype.fields,l=e.items,k=e.length;
	if(m.totalProperty){
		this.getTotal=this.createAccessor(m.totalProperty)
		}
		if(m.successProperty){
		this.getSuccess=this.createAccessor(m.successProperty)
		}
		if(m.messageProperty){
		this.getMessage=this.createAccessor(m.messageProperty)
		}
		this.getRoot=function(g){
		return(!Ext.isEmpty(g[this.meta.record]))?g[this.meta.record]:g[this.meta.root]
		};

	if(m.idPath||m.idProperty){
		var d=this.createAccessor(m.idPath||m.idProperty);
		this.getId=function(g){
			var i=d(g)||g.id;
			return(i===undefined||i==="")?null:i
			}
		}else{
	this.getId=function(){
		return null
		}
	}
var c=[];
for(var b=0;b<k;b++){
	e=l[b];
	var a=(e.mapping!==undefined&&e.mapping!==null)?e.mapping:e.name;
	c.push(this.createAccessor(a))
	}
	this.ef=c
},
createAccessor:function(){
	var a=Ext.DomQuery;
	return function(b){
		if(Ext.isFunction(b)){
			return b
			}
			switch(b){
			case this.meta.totalProperty:
				return function(c,d){
				return a.selectNumber(b,c,d)
				};

			break;
			case this.meta.successProperty:
				return function(d,e){
				var c=a.selectValue(b,d,true);
				var g=c!==false&&c!=="false";
				return g
				};

			break;
			default:
				return function(c,d){
				return a.selectValue(b,c,d)
				};

			break
			}
			}
}(),
extractValues:function(h,d,a){
	var g,c={};

	for(var e=0;e<a;e++){
		g=d[e];
		var b=this.ef[e](h);
		c[g.name]=g.convert((b!==undefined)?b:g.defaultValue,h)
		}
		return c
	}
});
Ext.data.XmlStore=Ext.extend(Ext.data.Store,{
	constructor:function(a){
		Ext.data.XmlStore.superclass.constructor.call(this,Ext.apply(a,{
			reader:new Ext.data.XmlReader(a)
			}))
		}
	});
Ext.reg("xmlstore",Ext.data.XmlStore);
Ext.data.GroupingStore=Ext.extend(Ext.data.Store,{
	constructor:function(d){
		d=d||{};

		this.hasMultiSort=true;
		this.multiSortInfo=this.multiSortInfo||{
			sorters:[]
		};

		var e=this.multiSortInfo.sorters,c=d.groupField||this.groupField,b=d.sortInfo||this.sortInfo,a=d.groupDir||this.groupDir;
		if(c){
			e.push({
				field:c,
				direction:a
			})
			}
			if(b){
			e.push(b)
			}
			Ext.data.GroupingStore.superclass.constructor.call(this,d);
		this.addEvents("groupchange");
		this.applyGroupField()
		},
	remoteGroup:false,
	groupOnSort:false,
	groupDir:"ASC",
	clearGrouping:function(){
		this.groupField=false;
		if(this.remoteGroup){
			if(this.baseParams){
				delete this.baseParams.groupBy;
				delete this.baseParams.groupDir
				}
				var a=this.lastOptions;
			if(a&&a.params){
				delete a.params.groupBy;
				delete a.params.groupDir
				}
				this.reload()
			}else{
			this.sort();
			this.fireEvent("datachanged",this)
			}
		},
groupBy:function(e,a,d){
	d=d?(String(d).toUpperCase()=="DESC"?"DESC":"ASC"):this.groupDir;
	if(this.groupField==e&&this.groupDir==d&&!a){
		return
	}
	var c=this.multiSortInfo.sorters;
	if(c.length>0&&c[0].field==this.groupField){
		c.shift()
		}
		this.groupField=e;
	this.groupDir=d;
	this.applyGroupField();
	var b=function(){
		this.fireEvent("groupchange",this,this.getGroupState())
		};

	if(this.groupOnSort){
		this.sort(e,d);
		b.call(this);
		return
	}
	if(this.remoteGroup){
		this.on("load",b,this,{
			single:true
		});
		this.reload()
		}else{
		this.sort(c);
		b.call(this)
		}
	},
sort:function(h,c){
	if(this.remoteSort){
		return Ext.data.GroupingStore.superclass.sort.call(this,h,c)
		}
		var g=[];
	if(Ext.isArray(arguments[0])){
		g=arguments[0]
		}else{
		if(h==undefined){
			g=this.sortInfo?[this.sortInfo]:[]
			}else{
			var e=this.fields.get(h);
			if(!e){
				return false
				}
				var b=e.name,a=this.sortInfo||null,d=this.sortToggle?this.sortToggle[b]:null;
			if(!c){
				if(a&&a.field==b){
					c=(this.sortToggle[b]||"ASC").toggle("ASC","DESC")
					}else{
					c=e.sortDir
					}
				}
			this.sortToggle[b]=c;
		this.sortInfo={
			field:b,
			direction:c
		};

		g=[this.sortInfo]
		}
	}
if(this.groupField){
	g.unshift({
		direction:this.groupDir,
		field:this.groupField
		})
	}
	return this.multiSort.call(this,g,c)
},
applyGroupField:function(){
	if(this.remoteGroup){
		if(!this.baseParams){
			this.baseParams={}
		}
		Ext.apply(this.baseParams,{
		groupBy:this.groupField,
		groupDir:this.groupDir
		});
	var a=this.lastOptions;
	if(a&&a.params){
		a.params.groupDir=this.groupDir;
		delete a.params.groupBy
		}
	}
},
applyGrouping:function(a){
	if(this.groupField!==false){
		this.groupBy(this.groupField,true,this.groupDir);
		return true
		}else{
		if(a===true){
			this.fireEvent("datachanged",this)
			}
			return false
		}
	},
getGroupState:function(){
	return this.groupOnSort&&this.groupField!==false?(this.sortInfo?this.sortInfo.field:undefined):this.groupField
	}
});
Ext.reg("groupingstore",Ext.data.GroupingStore);
Ext.data.DirectProxy=function(a){
	Ext.apply(this,a);
	if(typeof this.paramOrder=="string"){
		this.paramOrder=this.paramOrder.split(/[\s,|]/)
		}
		Ext.data.DirectProxy.superclass.constructor.call(this,a)
	};

Ext.extend(Ext.data.DirectProxy,Ext.data.DataProxy,{
	paramOrder:undefined,
	paramsAsHash:true,
	directFn:undefined,
	doRequest:function(b,c,a,e,l,m,o){
		var k=[],h=this.api[b]||this.directFn;
		switch(b){
			case Ext.data.Api.actions.create:
				k.push(a.jsonData);
				break;
			case Ext.data.Api.actions.read:
				if(h.directCfg.method.len>0){
				if(this.paramOrder){
					for(var d=0,g=this.paramOrder.length;d<g;d++){
						k.push(a[this.paramOrder[d]])
						}
					}else{
				if(this.paramsAsHash){
					k.push(a)
					}
				}
			}
		break;
case Ext.data.Api.actions.update:
	k.push(a.jsonData);
	break;
	case Ext.data.Api.actions.destroy:
	k.push(a.jsonData);
	break
	}
	var n={
	params:a||{},
	request:{
		callback:l,
		scope:m,
		arg:o
	},
	reader:e
};

k.push(this.createCallback(b,c,n),this);
	h.apply(window,k)
	},
createCallback:function(d,a,b){
	var c=this;
	return function(e,g){
		if(!g.status){
			if(d===Ext.data.Api.actions.read){
				c.fireEvent("loadexception",c,b,g,null)
				}
				c.fireEvent("exception",c,"remote",d,b,g,null);
			b.request.callback.call(b.request.scope,null,b.request.arg,false);
			return
		}
		if(d===Ext.data.Api.actions.read){
			c.onRead(d,b,e,g)
			}else{
			c.onWrite(d,b,e,g,a)
			}
		}
},
onRead:function(g,e,a,d){
	var b;
	try{
		b=e.reader.readRecords(a)
		}catch(c){
		this.fireEvent("loadexception",this,e,d,c);
		this.fireEvent("exception",this,"response",g,e,d,c);
		e.request.callback.call(e.request.scope,null,e.request.arg,false);
		return
	}
	this.fireEvent("load",this,d,e.request.arg);
	e.request.callback.call(e.request.scope,b,e.request.arg,true)
	},
onWrite:function(g,d,a,c,b){
	var e=d.reader.extractData(d.reader.getRoot(a),false);
	var h=d.reader.getSuccess(a);
	h=(h!==false);
	if(h){
		this.fireEvent("write",this,g,e,c,b,d.request.arg)
		}else{
		this.fireEvent("exception",this,"remote",g,d,a,b)
		}
		d.request.callback.call(d.request.scope,e,c,h)
	}
});
Ext.data.DirectStore=Ext.extend(Ext.data.Store,{
	constructor:function(a){
		var b=Ext.apply({},{
			batchTransactions:false
		},a);
		Ext.data.DirectStore.superclass.constructor.call(this,Ext.apply(b,{
			proxy:Ext.isDefined(b.proxy)?b.proxy:new Ext.data.DirectProxy(Ext.copyTo({},b,"paramOrder,paramsAsHash,directFn,api")),
			reader:(!Ext.isDefined(b.reader)&&b.fields)?new Ext.data.JsonReader(Ext.copyTo({},b,"totalProperty,root,idProperty"),b.fields):b.reader
			}))
		}
	});
Ext.reg("directstore",Ext.data.DirectStore);
Ext.Direct=Ext.extend(Ext.util.Observable,{
	exceptions:{
		TRANSPORT:"xhr",
		PARSE:"parse",
		LOGIN:"login",
		SERVER:"exception"
	},
	constructor:function(){
		this.addEvents("event","exception");
		this.transactions={};

		this.providers={}
	},
addProvider:function(e){
	var c=arguments;
	if(c.length>1){
		for(var d=0,b=c.length;d<b;d++){
			this.addProvider(c[d])
			}
			return
	}
	if(!e.events){
		e=new Ext.Direct.PROVIDERS[e.type](e)
		}
		e.id=e.id||Ext.id();
	this.providers[e.id]=e;
	e.on("data",this.onProviderData,this);
	e.on("exception",this.onProviderException,this);
	if(!e.isConnected()){
		e.connect()
		}
		return e
	},
getProvider:function(a){
	return this.providers[a]
	},
removeProvider:function(b){
	var a=b.id?b:this.providers[b];
	a.un("data",this.onProviderData,this);
	a.un("exception",this.onProviderException,this);
	delete this.providers[a.id];
	return a
	},
addTransaction:function(a){
	this.transactions[a.tid]=a;
	return a
	},
removeTransaction:function(a){
	delete this.transactions[a.tid||a];
	return a
	},
getTransaction:function(a){
	return this.transactions[a.tid||a]
	},
onProviderData:function(d,c){
	if(Ext.isArray(c)){
		for(var b=0,a=c.length;b<a;b++){
			this.onProviderData(d,c[b])
			}
			return
	}
	if(c.name&&c.name!="event"&&c.name!="exception"){
		this.fireEvent(c.name,c)
		}else{
		if(c.type=="exception"){
			this.fireEvent("exception",c)
			}
		}
	this.fireEvent("event",c,d)
	},
createEvent:function(a,b){
	return new Ext.Direct.eventTypes[a.type](Ext.apply(a,b))
	}
});
Ext.Direct=new Ext.Direct();
Ext.Direct.TID=1;
Ext.Direct.PROVIDERS={};

Ext.Direct.Transaction=function(a){
	Ext.apply(this,a);
	this.tid=++Ext.Direct.TID;
	this.retryCount=0
	};

Ext.Direct.Transaction.prototype={
	send:function(){
		this.provider.queueTransaction(this)
		},
	retry:function(){
		this.retryCount++;
		this.send()
		},
	getProvider:function(){
		return this.provider
		}
	};

Ext.Direct.Event=function(a){
	Ext.apply(this,a)
	};

Ext.Direct.Event.prototype={
	status:true,
	getData:function(){
		return this.data
		}
	};

Ext.Direct.RemotingEvent=Ext.extend(Ext.Direct.Event,{
	type:"rpc",
	getTransaction:function(){
		return this.transaction||Ext.Direct.getTransaction(this.tid)
		}
	});
Ext.Direct.ExceptionEvent=Ext.extend(Ext.Direct.RemotingEvent,{
	status:false,
	type:"exception"
});
Ext.Direct.eventTypes={
	rpc:Ext.Direct.RemotingEvent,
	event:Ext.Direct.Event,
	exception:Ext.Direct.ExceptionEvent
	};

Ext.direct.Provider=Ext.extend(Ext.util.Observable,{
	priority:1,
	constructor:function(a){
		Ext.apply(this,a);
		this.addEvents("connect","disconnect","data","exception");
		Ext.direct.Provider.superclass.constructor.call(this,a)
		},
	isConnected:function(){
		return false
		},
	connect:Ext.emptyFn,
	disconnect:Ext.emptyFn
	});
Ext.direct.JsonProvider=Ext.extend(Ext.direct.Provider,{
	parseResponse:function(a){
		if(!Ext.isEmpty(a.responseText)){
			if(typeof a.responseText=="object"){
				return a.responseText
				}
				return Ext.decode(a.responseText)
			}
			return null
		},
	getEvents:function(k){
		var g=null;
		try{
			g=this.parseResponse(k)
			}catch(h){
			var d=new Ext.Direct.ExceptionEvent({
				data:h,
				xhr:k,
				code:Ext.Direct.exceptions.PARSE,
				message:"Error parsing json response: \n\n "+g
				});
			return[d]
			}
			var c=[];
		if(Ext.isArray(g)){
			for(var b=0,a=g.length;b<a;b++){
				c.push(Ext.Direct.createEvent(g[b]))
				}
			}else{
		c.push(Ext.Direct.createEvent(g))
		}
		return c
	}
});
Ext.direct.PollingProvider=Ext.extend(Ext.direct.JsonProvider,{
	priority:3,
	interval:3000,
	constructor:function(a){
		Ext.direct.PollingProvider.superclass.constructor.call(this,a);
		this.addEvents("beforepoll","poll")
		},
	isConnected:function(){
		return !!this.pollTask
		},
	connect:function(){
		if(this.url&&!this.pollTask){
			this.pollTask=Ext.TaskMgr.start({
				run:function(){
					if(this.fireEvent("beforepoll",this)!==false){
						if(typeof this.url=="function"){
							this.url(this.baseParams)
							}else{
							Ext.Ajax.request({
								url:this.url,
								callback:this.onData,
								scope:this,
								params:this.baseParams
								})
							}
						}
				},
			interval:this.interval,
			scope:this
		});
	this.fireEvent("connect",this)
	}else{
	if(!this.url){
		throw"Error initializing PollingProvider, no url configured."
		}
	}
},
disconnect:function(){
	if(this.pollTask){
		Ext.TaskMgr.stop(this.pollTask);
		delete this.pollTask;
		this.fireEvent("disconnect",this)
		}
	},
onData:function(d,k,h){
	if(k){
		var c=this.getEvents(h);
		for(var b=0,a=c.length;b<a;b++){
			var g=c[b];
			this.fireEvent("data",this,g)
			}
		}else{
	var g=new Ext.Direct.ExceptionEvent({
		data:g,
		code:Ext.Direct.exceptions.TRANSPORT,
		message:"Unable to connect to the server.",
		xhr:h
	});
	this.fireEvent("data",this,g)
	}
}
});
Ext.Direct.PROVIDERS.polling=Ext.direct.PollingProvider;
Ext.direct.RemotingProvider=Ext.extend(Ext.direct.JsonProvider,{
	enableBuffer:10,
	maxRetries:1,
	timeout:undefined,
	constructor:function(a){
		Ext.direct.RemotingProvider.superclass.constructor.call(this,a);
		this.addEvents("beforecall","call");
		this.namespace=(Ext.isString(this.namespace))?Ext.ns(this.namespace):this.namespace||window;
		this.transactions={};

		this.callBuffer=[]
		},
	initAPI:function(){
		var h=this.actions;
		for(var k in h){
			var d=this.namespace[k]||(this.namespace[k]={}),e=h[k];
			for(var g=0,b=e.length;g<b;g++){
				var a=e[g];
				d[a.name]=this.createMethod(k,a)
				}
			}
		},
isConnected:function(){
	return !!this.connected
	},
connect:function(){
	if(this.url){
		this.initAPI();
		this.connected=true;
		this.fireEvent("connect",this)
		}else{
		if(!this.url){
			throw"Error initializing RemotingProvider, no url configured."
			}
		}
},
disconnect:function(){
	if(this.connected){
		this.connected=false;
		this.fireEvent("disconnect",this)
		}
	},
onData:function(a,h,k){
	if(h){
		var l=this.getEvents(k);
		for(var b=0,c=l.length;b<c;b++){
			var d=l[b],m=this.getTransaction(d);
			this.fireEvent("data",this,d);
			if(m){
				this.doCallback(m,d,true);
				Ext.Direct.removeTransaction(m)
				}
			}
		}else{
	var g=[].concat(a.ts);
	for(var b=0,c=g.length;b<c;b++){
		var m=this.getTransaction(g[b]);
		if(m&&m.retryCount<this.maxRetries){
			m.retry()
			}else{
			var d=new Ext.Direct.ExceptionEvent({
				data:d,
				transaction:m,
				code:Ext.Direct.exceptions.TRANSPORT,
				message:"Unable to connect to the server.",
				xhr:k
			});
			this.fireEvent("data",this,d);
			if(m){
				this.doCallback(m,d,false);
				Ext.Direct.removeTransaction(m)
				}
			}
	}
}
},
getCallData:function(a){
	return{
		action:a.action,
		method:a.method,
		data:a.data,
		type:"rpc",
		tid:a.tid
		}
	},
doSend:function(d){
	var g={
		url:this.url,
		callback:this.onData,
		scope:this,
		ts:d,
		timeout:this.timeout
		},b;
	if(Ext.isArray(d)){
		b=[];
		for(var c=0,a=d.length;c<a;c++){
			b.push(this.getCallData(d[c]))
			}
		}else{
	b=this.getCallData(d)
	}
	if(this.enableUrlEncode){
	var e={};

	e[Ext.isString(this.enableUrlEncode)?this.enableUrlEncode:"data"]=Ext.encode(b);
	g.params=e
	}else{
	g.jsonData=b
	}
	Ext.Ajax.request(g)
},
combineAndSend:function(){
	var a=this.callBuffer.length;
	if(a>0){
		this.doSend(a==1?this.callBuffer[0]:this.callBuffer);
		this.callBuffer=[]
		}
	},
queueTransaction:function(a){
	if(a.form){
		this.processForm(a);
		return
	}
	this.callBuffer.push(a);
	if(this.enableBuffer){
		if(!this.callTask){
			this.callTask=new Ext.util.DelayedTask(this.combineAndSend,this)
			}
			this.callTask.delay(Ext.isNumber(this.enableBuffer)?this.enableBuffer:10)
		}else{
		this.combineAndSend()
		}
	},
doCall:function(i,a,b){
	var h=null,e=b[a.len],g=b[a.len+1];
	if(a.len!==0){
		h=b.slice(0,a.len)
		}
		var d=new Ext.Direct.Transaction({
		provider:this,
		args:b,
		action:i,
		method:a.name,
		data:h,
		cb:g&&Ext.isFunction(e)?e.createDelegate(g):e
		});
	if(this.fireEvent("beforecall",this,d,a)!==false){
		Ext.Direct.addTransaction(d);
		this.queueTransaction(d);
		this.fireEvent("call",this,d,a)
		}
	},
doForm:function(k,b,g,i,e){
	var d=new Ext.Direct.Transaction({
		provider:this,
		action:k,
		method:b.name,
		args:[g,i,e],
		cb:e&&Ext.isFunction(i)?i.createDelegate(e):i,
		isForm:true
	});
	if(this.fireEvent("beforecall",this,d,b)!==false){
		Ext.Direct.addTransaction(d);
		var a=String(g.getAttribute("enctype")).toLowerCase()=="multipart/form-data",h={
			extTID:d.tid,
			extAction:k,
			extMethod:b.name,
			extType:"rpc",
			extUpload:String(a)
			};

		Ext.apply(d,{
			form:Ext.getDom(g),
			isUpload:a,
			params:i&&Ext.isObject(i.params)?Ext.apply(h,i.params):h
			});
		this.fireEvent("call",this,d,b);
		this.processForm(d)
		}
	},
processForm:function(a){
	Ext.Ajax.request({
		url:this.url,
		params:a.params,
		callback:this.onData,
		scope:this,
		form:a.form,
		isUpload:a.isUpload,
		ts:a
	})
	},
createMethod:function(d,a){
	var b;
	if(!a.formHandler){
		b=function(){
			this.doCall(d,a,Array.prototype.slice.call(arguments,0))
			}.createDelegate(this)
		}else{
		b=function(e,g,c){
			this.doForm(d,a,e,g,c)
			}.createDelegate(this)
		}
		b.directCfg={
		action:d,
		method:a
	};

	return b
	},
getTransaction:function(a){
	return a&&a.tid?Ext.Direct.getTransaction(a.tid):null
	},
doCallback:function(c,g){
	var d=g.status?"success":"failure";
	if(c&&c.cb){
		var b=c.cb,a=Ext.isDefined(g.result)?g.result:g.data;
		if(Ext.isFunction(b)){
			b(a,g)
			}else{
			Ext.callback(b[d],b.scope,[a,g]);
			Ext.callback(b.callback,b.scope,[a,g])
			}
		}
}
});
Ext.Direct.PROVIDERS.remoting=Ext.direct.RemotingProvider;
Ext.Resizable=Ext.extend(Ext.util.Observable,{
	constructor:function(d,e){
		this.el=Ext.get(d);
		if(e&&e.wrap){
			e.resizeChild=this.el;
			this.el=this.el.wrap(typeof e.wrap=="object"?e.wrap:{
				cls:"xresizable-wrap"
			});
			this.el.id=this.el.dom.id=e.resizeChild.id+"-rzwrap";
			this.el.setStyle("overflow","hidden");
			this.el.setPositioning(e.resizeChild.getPositioning());
			e.resizeChild.clearPositioning();
			if(!e.width||!e.height){
				var g=e.resizeChild.getSize();
				this.el.setSize(g.width,g.height)
				}
				if(e.pinned&&!e.adjustments){
				e.adjustments="auto"
				}
			}
		this.proxy=this.el.createProxy({
		tag:"div",
		cls:"x-resizable-proxy",
		id:this.el.id+"-rzproxy"
		},Ext.getBody());
	this.proxy.unselectable();
	this.proxy.enableDisplayMode("block");
	Ext.apply(this,e);
	if(this.pinned){
		this.disableTrackOver=true;
		this.el.addClass("x-resizable-pinned")
		}
		var l=this.el.getStyle("position");
	if(l!="absolute"&&l!="fixed"){
		this.el.setStyle("position","relative")
		}
		if(!this.handles){
		this.handles="s,e,se";
		if(this.multiDirectional){
			this.handles+=",n,w"
			}
		}
	if(this.handles=="all"){
	this.handles="n s e w ne nw se sw"
	}
	var p=this.handles.split(/\s*?[,;]\s*?| /);
	var c=Ext.Resizable.positions;
	for(var k=0,m=p.length;k<m;k++){
	if(p[k]&&c[p[k]]){
		var o=c[p[k]];
		this[o]=new Ext.Resizable.Handle(this,o,this.disableTrackOver,this.transparent,this.handleCls)
		}
	}
this.corner=this.southeast;
if(this.handles.indexOf("n")!=-1||this.handles.indexOf("w")!=-1){
	this.updateBox=true
	}
	this.activeHandle=null;
if(this.resizeChild){
	if(typeof this.resizeChild=="boolean"){
		this.resizeChild=Ext.get(this.el.dom.firstChild,true)
		}else{
		this.resizeChild=Ext.get(this.resizeChild,true)
		}
	}
if(this.adjustments=="auto"){
	var b=this.resizeChild;
	var n=this.west,h=this.east,a=this.north,p=this.south;
	if(b&&(n||a)){
		b.position("relative");
		b.setLeft(n?n.el.getWidth():0);
		b.setTop(a?a.el.getHeight():0)
		}
		this.adjustments=[(h?-h.el.getWidth():0)+(n?-n.el.getWidth():0),(a?-a.el.getHeight():0)+(p?-p.el.getHeight():0)-1]
	}
	if(this.draggable){
	this.dd=this.dynamic?this.el.initDD(null):this.el.initDDProxy(null,{
		dragElId:this.proxy.id
		});
	this.dd.setHandleElId(this.resizeChild?this.resizeChild.id:this.el.id);
	if(this.constrainTo){
		this.dd.constrainTo(this.constrainTo)
		}
	}
this.addEvents("beforeresize","resize");
if(this.width!==null&&this.height!==null){
	this.resizeTo(this.width,this.height)
	}else{
	this.updateChildSize()
	}
	if(Ext.isIE){
	this.el.dom.style.zoom=1
	}
	Ext.Resizable.superclass.constructor.call(this)
},
adjustments:[0,0],
animate:false,
disableTrackOver:false,
draggable:false,
duration:0.35,
dynamic:false,
easing:"easeOutStrong",
enabled:true,
handles:false,
multiDirectional:false,
height:null,
width:null,
heightIncrement:0,
widthIncrement:0,
minHeight:5,
minWidth:5,
maxHeight:10000,
maxWidth:10000,
minX:0,
minY:0,
pinned:false,
preserveRatio:false,
resizeChild:false,
transparent:false,
resizeTo:function(b,a){
	this.el.setSize(b,a);
	this.updateChildSize();
	this.fireEvent("resize",this,b,a,null)
	},
startSizing:function(c,b){
	this.fireEvent("beforeresize",this,c);
	if(this.enabled){
		if(!this.overlay){
			this.overlay=this.el.createProxy({
				tag:"div",
				cls:"x-resizable-overlay",
				html:"&#160;"
			},Ext.getBody());
			this.overlay.unselectable();
			this.overlay.enableDisplayMode("block");
			this.overlay.on({
				scope:this,
				mousemove:this.onMouseMove,
				mouseup:this.onMouseUp
				})
			}
			this.overlay.setStyle("cursor",b.el.getStyle("cursor"));
		this.resizing=true;
		this.startBox=this.el.getBox();
		this.startPoint=c.getXY();
		this.offsets=[(this.startBox.x+this.startBox.width)-this.startPoint[0],(this.startBox.y+this.startBox.height)-this.startPoint[1]];
		this.overlay.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));
		this.overlay.show();
		if(this.constrainTo){
			var a=Ext.get(this.constrainTo);
			this.resizeRegion=a.getRegion().adjust(a.getFrameWidth("t"),a.getFrameWidth("l"),-a.getFrameWidth("b"),-a.getFrameWidth("r"))
			}
			this.proxy.setStyle("visibility","hidden");
		this.proxy.show();
		this.proxy.setBox(this.startBox);
		if(!this.dynamic){
			this.proxy.setStyle("visibility","visible")
			}
		}
},
onMouseDown:function(a,b){
	if(this.enabled){
		b.stopEvent();
		this.activeHandle=a;
		this.startSizing(b,a)
		}
	},
onMouseUp:function(b){
	this.activeHandle=null;
	var a=this.resizeElement();
	this.resizing=false;
	this.handleOut();
	this.overlay.hide();
	this.proxy.hide();
	this.fireEvent("resize",this,a.width,a.height,b)
	},
updateChildSize:function(){
	if(this.resizeChild){
		var d=this.el;
		var e=this.resizeChild;
		var c=this.adjustments;
		if(d.dom.offsetWidth){
			var a=d.getSize(true);
			e.setSize(a.width+c[0],a.height+c[1])
			}
			if(Ext.isIE){
			setTimeout(function(){
				if(d.dom.offsetWidth){
					var g=d.getSize(true);
					e.setSize(g.width+c[0],g.height+c[1])
					}
				},10)
		}
	}
},
snap:function(c,e,b){
	if(!e||!c){
		return c
		}
		var d=c;
	var a=c%e;
	if(a>0){
		if(a>(e/2)){
			d=c+(e-a)
			}else{
			d=c-a
			}
		}
	return Math.max(b,d)
},
resizeElement:function(){
	var a=this.proxy.getBox();
	if(this.updateBox){
		this.el.setBox(a,false,this.animate,this.duration,null,this.easing)
		}else{
		this.el.setSize(a.width,a.height,this.animate,this.duration,null,this.easing)
		}
		this.updateChildSize();
	if(!this.dynamic){
		this.proxy.hide()
		}
		if(this.draggable&&this.constrainTo){
		this.dd.resetConstraints();
		this.dd.constrainTo(this.constrainTo)
		}
		return a
	},
constrain:function(b,c,a,d){
	if(b-c<a){
		c=b-a
		}else{
		if(b-c>d){
			c=b-d
			}
		}
	return c
},
onMouseMove:function(A){
	if(this.enabled&&this.activeHandle){
		try{
			if(this.resizeRegion&&!this.resizeRegion.contains(A.getPoint())){
				return
			}
			var u=this.curSize||this.startBox,m=this.startBox.x,l=this.startBox.y,c=m,b=l,n=u.width,v=u.height,d=n,p=v,o=this.minWidth,B=this.minHeight,t=this.maxWidth,E=this.maxHeight,i=this.widthIncrement,a=this.heightIncrement,C=A.getXY(),s=-(this.startPoint[0]-Math.max(this.minX,C[0])),q=-(this.startPoint[1]-Math.max(this.minY,C[1])),k=this.activeHandle.position,F,g;
			switch(k){
				case"east":
					n+=s;
					n=Math.min(Math.max(o,n),t);
					break;
				case"south":
					v+=q;
					v=Math.min(Math.max(B,v),E);
					break;
				case"southeast":
					n+=s;
					v+=q;
					n=Math.min(Math.max(o,n),t);
					v=Math.min(Math.max(B,v),E);
					break;
				case"north":
					q=this.constrain(v,q,B,E);
					l+=q;
					v-=q;
					break;
				case"west":
					s=this.constrain(n,s,o,t);
					m+=s;
					n-=s;
					break;
				case"northeast":
					n+=s;
					n=Math.min(Math.max(o,n),t);
					q=this.constrain(v,q,B,E);
					l+=q;
					v-=q;
					break;
				case"northwest":
					s=this.constrain(n,s,o,t);
					q=this.constrain(v,q,B,E);
					l+=q;
					v-=q;
					m+=s;
					n-=s;
					break;
				case"southwest":
					s=this.constrain(n,s,o,t);
					v+=q;
					v=Math.min(Math.max(B,v),E);
					m+=s;
					n-=s;
					break
					}
					var r=this.snap(n,i,o);
			var D=this.snap(v,a,B);
			if(r!=n||D!=v){
				switch(k){
					case"northeast":
						l-=D-v;
						break;
					case"north":
						l-=D-v;
						break;
					case"southwest":
						m-=r-n;
						break;
					case"west":
						m-=r-n;
						break;
					case"northwest":
						m-=r-n;
						l-=D-v;
						break
						}
						n=r;
				v=D
				}
				if(this.preserveRatio){
				switch(k){
					case"southeast":case"east":
						v=p*(n/d);
						v=Math.min(Math.max(B,v),E);
						n=d*(v/p);
						break;
					case"south":
						n=d*(v/p);
						n=Math.min(Math.max(o,n),t);
						v=p*(n/d);
						break;
					case"northeast":
						n=d*(v/p);
						n=Math.min(Math.max(o,n),t);
						v=p*(n/d);
						break;
					case"north":
						F=n;
						n=d*(v/p);
						n=Math.min(Math.max(o,n),t);
						v=p*(n/d);
						m+=(F-n)/2;
						break;
					case"southwest":
						v=p*(n/d);
						v=Math.min(Math.max(B,v),E);
						F=n;
						n=d*(v/p);
						m+=F-n;
						break;
					case"west":
						g=v;
						v=p*(n/d);
						v=Math.min(Math.max(B,v),E);
						l+=(g-v)/2;
						F=n;
						n=d*(v/p);
						m+=F-n;
						break;
					case"northwest":
						F=n;
						g=v;
						v=p*(n/d);
						v=Math.min(Math.max(B,v),E);
						n=d*(v/p);
						l+=g-v;
						m+=F-n;
						break
						}
					}
			this.proxy.setBounds(m,l,n,v);
		if(this.dynamic){
			this.resizeElement()
			}
		}catch(z){}
}
},
handleOver:function(){
	if(this.enabled){
		this.el.addClass("x-resizable-over")
		}
	},
handleOut:function(){
	if(!this.resizing){
		this.el.removeClass("x-resizable-over")
		}
	},
getEl:function(){
	return this.el
	},
getResizeChild:function(){
	return this.resizeChild
	},
destroy:function(b){
	Ext.destroy(this.dd,this.overlay,this.proxy);
	this.overlay=null;
	this.proxy=null;
	var c=Ext.Resizable.positions;
	for(var a in c){
		if(typeof c[a]!="function"&&this[c[a]]){
			this[c[a]].destroy()
			}
		}
	if(b){
	this.el.update("");
	Ext.destroy(this.el);
	this.el=null
	}
	this.purgeListeners()
},
syncHandleHeight:function(){
	var a=this.el.getHeight(true);
	if(this.west){
		this.west.el.setHeight(a)
		}
		if(this.east){
		this.east.el.setHeight(a)
		}
	}
});
Ext.Resizable.positions={
	n:"north",
	s:"south",
	e:"east",
	w:"west",
	se:"southeast",
	sw:"southwest",
	nw:"northwest",
	ne:"northeast"
};

Ext.Resizable.Handle=Ext.extend(Object,{
	constructor:function(d,g,c,e,a){
		if(!this.tpl){
			var b=Ext.DomHelper.createTemplate({
				tag:"div",
				cls:"x-resizable-handle x-resizable-handle-{0}"
			});
			b.compile();
			Ext.Resizable.Handle.prototype.tpl=b
			}
			this.position=g;
		this.rz=d;
		this.el=this.tpl.append(d.el.dom,[this.position],true);
		this.el.unselectable();
		if(e){
			this.el.setOpacity(0)
			}
			if(!Ext.isEmpty(a)){
			this.el.addClass(a)
			}
			this.el.on("mousedown",this.onMouseDown,this);
		if(!c){
			this.el.on({
				scope:this,
				mouseover:this.onMouseOver,
				mouseout:this.onMouseOut
				})
			}
		},
afterResize:function(a){},
	onMouseDown:function(a){
	this.rz.onMouseDown(this,a)
	},
onMouseOver:function(a){
	this.rz.handleOver(this,a)
	},
onMouseOut:function(a){
	this.rz.handleOut(this,a)
	},
destroy:function(){
	Ext.destroy(this.el);
	this.el=null
	}
});
Ext.Window=Ext.extend(Ext.Panel,{
	baseCls:"x-window",
	resizable:true,
	draggable:true,
	closable:true,
	closeAction:"close",
	constrain:false,
	constrainHeader:false,
	plain:false,
	minimizable:false,
	maximizable:false,
	minHeight:100,
	minWidth:200,
	expandOnShow:true,
	showAnimDuration:0.25,
	hideAnimDuration:0.25,
	collapsible:false,
	initHidden:undefined,
	hidden:true,
	elements:"header,body",
	frame:true,
	floating:true,
	initComponent:function(){
		this.initTools();
		Ext.Window.superclass.initComponent.call(this);
		this.addEvents("resize","maximize","minimize","restore");
		if(Ext.isDefined(this.initHidden)){
			this.hidden=this.initHidden
			}
			if(this.hidden===false){
			this.hidden=true;
			this.show()
			}
		},
getState:function(){
	return Ext.apply(Ext.Window.superclass.getState.call(this)||{},this.getBox(true))
	},
onRender:function(b,a){
	Ext.Window.superclass.onRender.call(this,b,a);
	if(this.plain){
		this.el.addClass("x-window-plain")
		}
		this.focusEl=this.el.createChild({
		tag:"a",
		href:"#",
		cls:"x-dlg-focus",
		tabIndex:"-1",
		html:"&#160;"
	});
	this.focusEl.swallowEvent("click",true);
	this.proxy=this.el.createProxy("x-window-proxy");
	this.proxy.enableDisplayMode("block");
	if(this.modal){
		this.mask=this.container.createChild({
			cls:"ext-el-mask"
		},this.el.dom);
		this.mask.enableDisplayMode("block");
		this.mask.hide();
		this.mon(this.mask,"click",this.focus,this)
		}
		if(this.maximizable){
		this.mon(this.header,"dblclick",this.toggleMaximize,this)
		}
	},
initEvents:function(){
	Ext.Window.superclass.initEvents.call(this);
	if(this.animateTarget){
		this.setAnimateTarget(this.animateTarget)
		}
		if(this.resizable){
		this.resizer=new Ext.Resizable(this.el,{
			minWidth:this.minWidth,
			minHeight:this.minHeight,
			handles:this.resizeHandles||"all",
			pinned:true,
			resizeElement:this.resizerAction,
			handleCls:"x-window-handle"
		});
		this.resizer.window=this;
		this.mon(this.resizer,"beforeresize",this.beforeResize,this)
		}
		if(this.draggable){
		this.header.addClass("x-window-draggable")
		}
		this.mon(this.el,"mousedown",this.toFront,this);
	this.manager=this.manager||Ext.WindowMgr;
	this.manager.register(this);
	if(this.maximized){
		this.maximized=false;
		this.maximize()
		}
		if(this.closable){
		var a=this.getKeyMap();
		a.on(27,this.onEsc,this);
		a.disable()
		}
	},
initDraggable:function(){
	this.dd=new Ext.Window.DD(this)
	},
onEsc:function(a,b){
	b.stopEvent();
	this[this.closeAction]()
	},
beforeDestroy:function(){
	if(this.rendered){
		this.hide();
		this.clearAnchor();
		Ext.destroy(this.focusEl,this.resizer,this.dd,this.proxy,this.mask)
		}
		Ext.Window.superclass.beforeDestroy.call(this)
	},
onDestroy:function(){
	if(this.manager){
		this.manager.unregister(this)
		}
		Ext.Window.superclass.onDestroy.call(this)
	},
initTools:function(){
	if(this.minimizable){
		this.addTool({
			id:"minimize",
			handler:this.minimize.createDelegate(this,[])
			})
		}
		if(this.maximizable){
		this.addTool({
			id:"maximize",
			handler:this.maximize.createDelegate(this,[])
			});
		this.addTool({
			id:"restore",
			handler:this.restore.createDelegate(this,[]),
			hidden:true
		})
		}
		if(this.closable){
		this.addTool({
			id:"close",
			handler:this[this.closeAction].createDelegate(this,[])
			})
		}
	},
resizerAction:function(){
	var a=this.proxy.getBox();
	this.proxy.hide();
	this.window.handleResize(a);
	return a
	},
beforeResize:function(){
	this.resizer.minHeight=Math.max(this.minHeight,this.getFrameHeight()+40);
	this.resizer.minWidth=Math.max(this.minWidth,this.getFrameWidth()+40);
	this.resizeBox=this.el.getBox()
	},
updateHandles:function(){
	if(Ext.isIE&&this.resizer){
		this.resizer.syncHandleHeight();
		this.el.repaint()
		}
	},
handleResize:function(b){
	var a=this.resizeBox;
	if(a.x!=b.x||a.y!=b.y){
		this.updateBox(b)
		}else{
		this.setSize(b);
		if(Ext.isIE6&&Ext.isStrict){
			this.doLayout()
			}
		}
	this.focus();
this.updateHandles();
this.saveState()
},
focus:function(){
	var e=this.focusEl,a=this.defaultButton,c=typeof a,d,b;
	if(Ext.isDefined(a)){
		if(Ext.isNumber(a)&&this.fbar){
			e=this.fbar.items.get(a)
			}else{
			if(Ext.isString(a)){
				e=Ext.getCmp(a)
				}else{
				e=a
				}
			}
		d=e.getEl();
	b=Ext.getDom(this.container);
	if(d&&b){
		if(b!=document.body&&!Ext.lib.Region.getRegion(b).contains(Ext.lib.Region.getRegion(d.dom))){
			return
		}
	}
}
e=e||this.focusEl;
e.focus.defer(10,e)
},
setAnimateTarget:function(a){
	a=Ext.get(a);
	this.animateTarget=a
	},
beforeShow:function(){
	delete this.el.lastXY;
	delete this.el.lastLT;
	if(this.x===undefined||this.y===undefined){
		var a=this.el.getAlignToXY(this.container,"c-c");
		var b=this.el.translatePoints(a[0],a[1]);
		this.x=this.x===undefined?b.left:this.x;
		this.y=this.y===undefined?b.top:this.y
		}
		this.el.setLeftTop(this.x,this.y);
	if(this.expandOnShow){
		this.expand(false)
		}
		if(this.modal){
		Ext.getBody().addClass("x-body-masked");
		this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true));
		this.mask.show()
		}
	},
show:function(c,a,b){
	if(!this.rendered){
		this.render(Ext.getBody())
		}
		if(this.hidden===false){
		this.toFront();
		return this
		}
		if(this.fireEvent("beforeshow",this)===false){
		return this
		}
		if(a){
		this.on("show",a,b,{
			single:true
		})
		}
		this.hidden=false;
	if(Ext.isDefined(c)){
		this.setAnimateTarget(c)
		}
		this.beforeShow();
	if(this.animateTarget){
		this.animShow()
		}else{
		this.afterShow()
		}
		return this
	},
afterShow:function(b){
	if(this.isDestroyed){
		return false
		}
		this.proxy.hide();
	this.el.setStyle("display","block");
	this.el.show();
	if(this.maximized){
		this.fitContainer()
		}
		if(Ext.isMac&&Ext.isGecko2){
		this.cascade(this.setAutoScroll)
		}
		if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){
		Ext.EventManager.onWindowResize(this.onWindowResize,this)
		}
		this.doConstrain();
	this.doLayout();
	if(this.keyMap){
		this.keyMap.enable()
		}
		this.toFront();
	this.updateHandles();
	if(b&&(Ext.isIE||Ext.isWebKit)){
		var a=this.getSize();
		this.onResize(a.width,a.height)
		}
		this.onShow();
	this.fireEvent("show",this)
	},
animShow:function(){
	this.proxy.show();
	this.proxy.setBox(this.animateTarget.getBox());
	this.proxy.setOpacity(0);
	var a=this.getBox();
	this.el.setStyle("display","none");
	this.proxy.shift(Ext.apply(a,{
		callback:this.afterShow.createDelegate(this,[true],false),
		scope:this,
		easing:"easeNone",
		duration:this.showAnimDuration,
		opacity:0.5
	}))
	},
hide:function(c,a,b){
	if(this.hidden||this.fireEvent("beforehide",this)===false){
		return this
		}
		if(a){
		this.on("hide",a,b,{
			single:true
		})
		}
		this.hidden=true;
	if(c!==undefined){
		this.setAnimateTarget(c)
		}
		if(this.modal){
		this.mask.hide();
		Ext.getBody().removeClass("x-body-masked")
		}
		if(this.animateTarget){
		this.animHide()
		}else{
		this.el.hide();
		this.afterHide()
		}
		return this
	},
afterHide:function(){
	this.proxy.hide();
	if(this.monitorResize||this.modal||this.constrain||this.constrainHeader){
		Ext.EventManager.removeResizeListener(this.onWindowResize,this)
		}
		if(this.keyMap){
		this.keyMap.disable()
		}
		this.onHide();
	this.fireEvent("hide",this)
	},
animHide:function(){
	this.proxy.setOpacity(0.5);
	this.proxy.show();
	var a=this.getBox(false);
	this.proxy.setBox(a);
	this.el.hide();
	this.proxy.shift(Ext.apply(this.animateTarget.getBox(),{
		callback:this.afterHide,
		scope:this,
		duration:this.hideAnimDuration,
		easing:"easeNone",
		opacity:0
	}))
	},
onShow:Ext.emptyFn,
onHide:Ext.emptyFn,
onWindowResize:function(){
	if(this.maximized){
		this.fitContainer()
		}
		if(this.modal){
		this.mask.setSize("100%","100%");
		var a=this.mask.dom.offsetHeight;
		this.mask.setSize(Ext.lib.Dom.getViewWidth(true),Ext.lib.Dom.getViewHeight(true))
		}
		this.doConstrain()
	},
doConstrain:function(){
	if(this.constrain||this.constrainHeader){
		var b;
		if(this.constrain){
			b={
				right:this.el.shadowOffset,
				left:this.el.shadowOffset,
				bottom:this.el.shadowOffset
				}
			}else{
		var a=this.getSize();
		b={
			right:-(a.width-100),
			bottom:-(a.height-25)
			}
		}
	var c=this.el.getConstrainToXY(this.container,true,b);
if(c){
	this.setPosition(c[0],c[1])
	}
}
},
ghost:function(a){
	var c=this.createGhost(a);
	var b=this.getBox(true);
	c.setLeftTop(b.x,b.y);
	c.setWidth(b.width);
	this.el.hide();
	this.activeGhost=c;
	return c
	},
unghost:function(b,a){
	if(!this.activeGhost){
		return
	}
	if(b!==false){
		this.el.show();
		this.focus.defer(10,this);
		if(Ext.isMac&&Ext.isGecko2){
			this.cascade(this.setAutoScroll)
			}
		}
	if(a!==false){
	this.setPosition(this.activeGhost.getLeft(true),this.activeGhost.getTop(true))
	}
	this.activeGhost.hide();
this.activeGhost.remove();
delete this.activeGhost
},
minimize:function(){
	this.fireEvent("minimize",this);
	return this
	},
close:function(){
	if(this.fireEvent("beforeclose",this)!==false){
		if(this.hidden){
			this.doClose()
			}else{
			this.hide(null,this.doClose,this)
			}
		}
},
doClose:function(){
	this.fireEvent("close",this);
	this.destroy()
	},
maximize:function(){
	if(!this.maximized){
		this.expand(false);
		this.restoreSize=this.getSize();
		this.restorePos=this.getPosition(true);
		if(this.maximizable){
			this.tools.maximize.hide();
			this.tools.restore.show()
			}
			this.maximized=true;
		this.el.disableShadow();
		if(this.dd){
			this.dd.lock()
			}
			if(this.collapsible){
			this.tools.toggle.hide()
			}
			this.el.addClass("x-window-maximized");
		this.container.addClass("x-window-maximized-ct");
		this.setPosition(0,0);
		this.fitContainer();
		this.fireEvent("maximize",this)
		}
		return this
	},
restore:function(){
	if(this.maximized){
		var a=this.tools;
		this.el.removeClass("x-window-maximized");
		if(a.restore){
			a.restore.hide()
			}
			if(a.maximize){
			a.maximize.show()
			}
			this.setPosition(this.restorePos[0],this.restorePos[1]);
		this.setSize(this.restoreSize.width,this.restoreSize.height);
		delete this.restorePos;
		delete this.restoreSize;
		this.maximized=false;
		this.el.enableShadow(true);
		if(this.dd){
			this.dd.unlock()
			}
			if(this.collapsible&&a.toggle){
			a.toggle.show()
			}
			this.container.removeClass("x-window-maximized-ct");
		this.doConstrain();
		this.fireEvent("restore",this)
		}
		return this
	},
toggleMaximize:function(){
	return this[this.maximized?"restore":"maximize"]()
	},
fitContainer:function(){
	var a=this.container.getViewSize(false);
	this.setSize(a.width,a.height)
	},
setZIndex:function(a){
	if(this.modal){
		this.mask.setStyle("z-index",a)
		}
		this.el.setZIndex(++a);
	a+=5;
	if(this.resizer){
		this.resizer.proxy.setStyle("z-index",++a)
		}
		this.lastZIndex=a
	},
alignTo:function(b,a,c){
	var d=this.el.getAlignToXY(b,a,c);
	this.setPagePosition(d[0],d[1]);
	return this
	},
anchorTo:function(c,e,d,b){
	this.clearAnchor();
	this.anchorTarget={
		el:c,
		alignment:e,
		offsets:d
	};

	Ext.EventManager.onWindowResize(this.doAnchor,this);
	var a=typeof b;
	if(a!="undefined"){
		Ext.EventManager.on(window,"scroll",this.doAnchor,this,{
			buffer:a=="number"?b:50
			})
		}
		return this.doAnchor()
	},
doAnchor:function(){
	var a=this.anchorTarget;
	this.alignTo(a.el,a.alignment,a.offsets);
	return this
	},
clearAnchor:function(){
	if(this.anchorTarget){
		Ext.EventManager.removeResizeListener(this.doAnchor,this);
		Ext.EventManager.un(window,"scroll",this.doAnchor,this);
		delete this.anchorTarget
		}
		return this
	},
toFront:function(a){
	if(this.manager.bringToFront(this)){
		if(!a||!a.getTarget().focus){
			this.focus()
			}
		}
	return this
},
setActive:function(a){
	if(a){
		if(!this.maximized){
			this.el.enableShadow(true)
			}
			this.fireEvent("activate",this)
		}else{
		this.el.disableShadow();
		this.fireEvent("deactivate",this)
		}
	},
toBack:function(){
	this.manager.sendToBack(this);
	return this
	},
center:function(){
	var a=this.el.getAlignToXY(this.container,"c-c");
	this.setPagePosition(a[0],a[1]);
	return this
	}
});
Ext.reg("window",Ext.Window);
Ext.Window.DD=Ext.extend(Ext.dd.DD,{
	constructor:function(a){
		this.win=a;
		Ext.Window.DD.superclass.constructor.call(this,a.el.id,"WindowDD-"+a.id);
		this.setHandleElId(a.header.id);
		this.scroll=false
		},
	moveOnly:true,
	headerOffsets:[100,25],
	startDrag:function(){
		var a=this.win;
		this.proxy=a.ghost(a.initialConfig.cls);
		if(a.constrain!==false){
			var c=a.el.shadowOffset;
			this.constrainTo(a.container,{
				right:c,
				left:c,
				bottom:c
			})
			}else{
			if(a.constrainHeader!==false){
				var b=this.proxy.getSize();
				this.constrainTo(a.container,{
					right:-(b.width-this.headerOffsets[0]),
					bottom:-(b.height-this.headerOffsets[1])
					})
				}
			}
	},
b4Drag:Ext.emptyFn,
onDrag:function(a){
	this.alignElWithMouse(this.proxy,a.getPageX(),a.getPageY())
	},
endDrag:function(a){
	this.win.unghost();
	this.win.saveState()
	}
});
Ext.WindowGroup=function(){
	var g={};

	var d=[];
	var e=null;
	var c=function(k,i){
		return(!k._lastAccess||k._lastAccess<i._lastAccess)?-1:1
		};

	var h=function(){
		var m=d,k=m.length;
		if(k>0){
			m.sort(c);
			var l=m[0].manager.zseed;
			for(var n=0;n<k;n++){
				var o=m[n];
				if(o&&!o.hidden){
					o.setZIndex(l+(n*10))
					}
				}
			}
		a()
	};

var b=function(i){
	if(i!=e){
		if(e){
			e.setActive(false)
			}
			e=i;
		if(i){
			i.setActive(true)
			}
		}
};

var a=function(){
	for(var k=d.length-1;k>=0;--k){
		if(!d[k].hidden){
			b(d[k]);
			return
		}
	}
	b(null)
};

return{
	zseed:9000,
	register:function(i){
		if(i.manager){
			i.manager.unregister(i)
			}
			i.manager=this;
		g[i.id]=i;
		d.push(i);
		i.on("hide",a)
		},
	unregister:function(i){
		delete i.manager;
		delete g[i.id];
		i.un("hide",a);
		d.remove(i)
		},
	get:function(i){
		return typeof i=="object"?i:g[i]
		},
	bringToFront:function(i){
		i=this.get(i);
		if(i!=e){
			i._lastAccess=new Date().getTime();
			h();
			return true
			}
			return false
		},
	sendToBack:function(i){
		i=this.get(i);
		i._lastAccess=-(new Date().getTime());
		h();
		return i
		},
	hideAll:function(){
		for(var i in g){
			if(g[i]&&typeof g[i]!="function"&&g[i].isVisible()){
				g[i].hide()
				}
			}
		},
getActive:function(){
	return e
	},
getBy:function(m,l){
	var n=[];
	for(var k=d.length-1;k>=0;--k){
		var o=d[k];
		if(m.call(l||o,o)!==false){
			n.push(o)
			}
		}
	return n
},
each:function(k,i){
	for(var l in g){
		if(g[l]&&typeof g[l]!="function"){
			if(k.call(i||g[l],g[l])===false){
				return
			}
		}
	}
	}
}
};

Ext.WindowMgr=new Ext.WindowGroup();
Ext.MessageBox=function(){
	var v,b,r,u,h,m,t,a,o,q,k,g,s,w,p,i="",d="",n=["ok","yes","no","cancel"];
	var c=function(y){
		s[y].blur();
		if(v.isVisible()){
			v.hide();
			x();
			Ext.callback(b.fn,b.scope||window,[y,w.dom.value,b],1)
			}
		};

var x=function(){
	if(b&&b.cls){
		v.el.removeClass(b.cls)
		}
		o.reset()
	};

var e=function(A,y,z){
	if(b&&b.closable!==false){
		v.hide();
		x()
		}
		if(z){
		z.stopEvent()
		}
	};

var l=function(y){
	var A=0,z;
	if(!y){
		Ext.each(n,function(B){
			s[B].hide()
			});
		return A
		}
		v.footer.dom.style.display="";
	Ext.iterate(s,function(B,C){
		z=y[B];
		if(z){
			C.show();
			C.setText(Ext.isString(z)?z:Ext.MessageBox.buttonText[B]);
			A+=C.getEl().getWidth()+15
			}else{
			C.hide()
			}
		});
return A
};

return{
	getDialog:function(y){
		if(!v){
			var A=[];
			s={};

			Ext.each(n,function(B){
				A.push(s[B]=new Ext.Button({
					text:this.buttonText[B],
					handler:c.createCallback(B),
					hideMode:"offsets"
				}))
				},this);
			v=new Ext.Window({
				autoCreate:true,
				title:y,
				resizable:false,
				constrain:true,
				constrainHeader:true,
				minimizable:false,
				maximizable:false,
				stateful:false,
				modal:true,
				shim:true,
				buttonAlign:"center",
				width:400,
				height:100,
				minHeight:80,
				plain:true,
				footer:true,
				closable:true,
				close:function(){
					if(b&&b.buttons&&b.buttons.no&&!b.buttons.cancel){
						c("no")
						}else{
						c("cancel")
						}
					},
			fbar:new Ext.Toolbar({
				items:A,
				enableOverflow:false
			})
			});
		v.render(document.body);
		v.getEl().addClass("x-window-dlg");
		r=v.mask;
		h=v.body.createChild({
			html:'<div class="ext-mb-icon"></div><div class="ext-mb-content"><span class="ext-mb-text"></span><br /><div class="ext-mb-fix-cursor"><input type="text" class="ext-mb-input" /><textarea class="ext-mb-textarea"></textarea></div></div>'
		});
		k=Ext.get(h.dom.firstChild);
		var z=h.dom.childNodes[1];
		m=Ext.get(z.firstChild);
		t=Ext.get(z.childNodes[2].firstChild);
		t.enableDisplayMode();
		t.addKeyListener([10,13],function(){
			if(v.isVisible()&&b&&b.buttons){
				if(b.buttons.ok){
					c("ok")
					}else{
					if(b.buttons.yes){
						c("yes")
						}
					}
			}
		});
a=Ext.get(z.childNodes[2].childNodes[1]);
a.enableDisplayMode();
o=new Ext.ProgressBar({
	renderTo:h
});
h.createChild({
	cls:"x-clear"
})
}
return v
},
updateText:function(B){
	if(!v.isVisible()&&!b.width){
		v.setSize(this.maxWidth,100)
		}
		m.update(B?B+" ":"&#160;");
	var z=d!=""?(k.getWidth()+k.getMargins("lr")):0,D=m.getWidth()+m.getMargins("lr"),A=v.getFrameWidth("lr"),C=v.body.getFrameWidth("lr"),y;
	y=Math.max(Math.min(b.width||z+D+A+C,b.maxWidth||this.maxWidth),Math.max(b.minWidth||this.minWidth,p||0));
	if(b.prompt===true){
		w.setWidth(y-z-A-C)
		}
		if(b.progress===true||b.wait===true){
		o.setSize(y-z-A-C)
		}
		if(Ext.isIE&&y==p){
		y+=4
		}
		m.update(B||"&#160;");
	v.setSize(y,"auto").center();
	return this
	},
updateProgress:function(z,y,A){
	o.updateProgress(z,y);
	if(A){
		this.updateText(A)
		}
		return this
	},
isVisible:function(){
	return v&&v.isVisible()
	},
hide:function(){
	var y=v?v.activeGhost:null;
	if(this.isVisible()||y){
		v.hide();
		x();
		if(y){
			v.unghost(false,false)
			}
		}
	return this
},
show:function(B){
	if(this.isVisible()){
		this.hide()
		}
		b=B;
	var C=this.getDialog(b.title||"&#160;");
	C.setTitle(b.title||"&#160;");
	var y=(b.closable!==false&&b.progress!==true&&b.wait!==true);
	C.tools.close.setDisplayed(y);
	w=t;
	b.prompt=b.prompt||(b.multiline?true:false);
	if(b.prompt){
		if(b.multiline){
			t.hide();
			a.show();
			a.setHeight(Ext.isNumber(b.multiline)?b.multiline:this.defaultTextHeight);
			w=a
			}else{
			t.show();
			a.hide()
			}
		}else{
	t.hide();
	a.hide()
	}
	w.dom.value=b.value||"";
if(b.prompt){
	C.focusEl=w
	}else{
	var A=b.buttons;
	var z=null;
	if(A&&A.ok){
		z=s.ok
		}else{
		if(A&&A.yes){
			z=s.yes
			}
		}
	if(z){
	C.focusEl=z
	}
}
if(Ext.isDefined(b.iconCls)){
	C.setIconClass(b.iconCls)
	}
	this.setIcon(Ext.isDefined(b.icon)?b.icon:i);
p=l(b.buttons);
o.setVisible(b.progress===true||b.wait===true);
this.updateProgress(0,b.progressText);
this.updateText(b.msg);
if(b.cls){
	C.el.addClass(b.cls)
	}
	C.proxyDrag=b.proxyDrag===true;
C.modal=b.modal!==false;
C.mask=b.modal!==false?r:false;
if(!C.isVisible()){
	document.body.appendChild(v.el.dom);
	C.setAnimateTarget(b.animEl);
	C.on("show",function(){
		if(y===true){
			C.keyMap.enable()
			}else{
			C.keyMap.disable()
			}
		},this,{
		single:true
	});
C.show(b.animEl)
}
if(b.wait===true){
	o.wait(b.waitConfig)
	}
	return this
},
setIcon:function(y){
	if(!v){
		i=y;
		return
	}
	i=undefined;
	if(y&&y!=""){
		k.removeClass("x-hidden");
		k.replaceClass(d,y);
		h.addClass("x-dlg-icon");
		d=y
		}else{
		k.replaceClass(d,"x-hidden");
		h.removeClass("x-dlg-icon");
		d=""
		}
		return this
	},
progress:function(A,z,y){
	this.show({
		title:A,
		msg:z,
		buttons:false,
		progress:true,
		closable:false,
		minWidth:this.minProgressWidth,
		progressText:y
	});
	return this
	},
wait:function(A,z,y){
	this.show({
		title:z,
		msg:A,
		buttons:false,
		closable:false,
		wait:true,
		modal:true,
		minWidth:this.minProgressWidth,
		waitConfig:y
	});
	return this
	},
alert:function(B,A,z,y){
	this.show({
		title:B,
		msg:A,
		buttons:this.OK,
		fn:z,
		scope:y,
		minWidth:this.minWidth
		});
	return this
	},
confirm:function(B,A,z,y){
	this.show({
		title:B,
		msg:A,
		buttons:this.YESNO,
		fn:z,
		scope:y,
		icon:this.QUESTION,
		minWidth:this.minWidth
		});
	return this
	},
prompt:function(D,C,A,z,y,B){
	this.show({
		title:D,
		msg:C,
		buttons:this.OKCANCEL,
		fn:A,
		minWidth:this.minPromptWidth,
		scope:z,
		prompt:true,
		multiline:y,
		value:B
	});
	return this
	},
OK:{
	ok:true
},
CANCEL:{
	cancel:true
},
OKCANCEL:{
	ok:true,
	cancel:true
},
YESNO:{
	yes:true,
	no:true
},
YESNOCANCEL:{
	yes:true,
	no:true,
	cancel:true
},
INFO:"ext-mb-info",
WARNING:"ext-mb-warning",
QUESTION:"ext-mb-question",
ERROR:"ext-mb-error",
defaultTextHeight:75,
maxWidth:600,
minWidth:100,
minProgressWidth:250,
minPromptWidth:250,
buttonText:{
	ok:"OK",
	cancel:"Cancel",
	yes:"Yes",
	no:"No"
}
}
}();
Ext.Msg=Ext.MessageBox;
Ext.dd.PanelProxy=Ext.extend(Object,{
	constructor:function(a,b){
		this.panel=a;
		this.id=this.panel.id+"-ddproxy";
		Ext.apply(this,b)
		},
	insertProxy:true,
	setStatus:Ext.emptyFn,
	reset:Ext.emptyFn,
	update:Ext.emptyFn,
	stop:Ext.emptyFn,
	sync:Ext.emptyFn,
	getEl:function(){
		return this.ghost
		},
	getGhost:function(){
		return this.ghost
		},
	getProxy:function(){
		return this.proxy
		},
	hide:function(){
		if(this.ghost){
			if(this.proxy){
				this.proxy.remove();
				delete this.proxy
				}
				this.panel.el.dom.style.display="";
			this.ghost.remove();
			delete this.ghost
			}
		},
show:function(){
	if(!this.ghost){
		this.ghost=this.panel.createGhost(this.panel.initialConfig.cls,undefined,Ext.getBody());
		this.ghost.setXY(this.panel.el.getXY());
		if(this.insertProxy){
			this.proxy=this.panel.el.insertSibling({
				cls:"x-panel-dd-spacer"
			});
			this.proxy.setSize(this.panel.getSize())
			}
			this.panel.el.dom.style.display="none"
		}
	},
repair:function(b,c,a){
	this.hide();
	if(typeof c=="function"){
		c.call(a||this)
		}
	},
moveProxy:function(a,b){
	if(this.proxy){
		a.insertBefore(this.proxy.dom,b)
		}
	}
});
Ext.Panel.DD=Ext.extend(Ext.dd.DragSource,{
	constructor:function(b,a){
		this.panel=b;
		this.dragData={
			panel:b
		};

		this.proxy=new Ext.dd.PanelProxy(b,a);
		Ext.Panel.DD.superclass.constructor.call(this,b.el,a);
		var d=b.header,c=b.body;
		if(d){
			this.setHandleElId(d.id);
			c=b.header
			}
			c.setStyle("cursor","move");
		this.scroll=false
		},
	showFrame:Ext.emptyFn,
	startDrag:Ext.emptyFn,
	b4StartDrag:function(a,b){
		this.proxy.show()
		},
	b4MouseDown:function(b){
		var a=b.getPageX(),c=b.getPageY();
		this.autoOffset(a,c)
		},
	onInitDrag:function(a,b){
		this.onStartDrag(a,b);
		return true
		},
	createFrame:Ext.emptyFn,
	getDragEl:function(a){
		return this.proxy.ghost.dom
		},
	endDrag:function(a){
		this.proxy.hide();
		this.panel.saveState()
		},
	autoOffset:function(a,b){
		a-=this.startPageX;
		b-=this.startPageY;
		this.setDelta(a,b)
		}
	});
Ext.state.Provider=Ext.extend(Ext.util.Observable,{
	constructor:function(){
		this.addEvents("statechange");
		this.state={};

		Ext.state.Provider.superclass.constructor.call(this)
		},
	get:function(b,a){
		return typeof this.state[b]=="undefined"?a:this.state[b]
		},
	clear:function(a){
		delete this.state[a];
		this.fireEvent("statechange",this,a,null)
		},
	set:function(a,b){
		this.state[a]=b;
		this.fireEvent("statechange",this,a,b)
		},
	decodeValue:function(b){
		var e=/^(a|n|d|b|s|o|e)\:(.*)$/,h=e.exec(unescape(b)),d,c,a,g;
		if(!h||!h[1]){
			return
		}
		c=h[1];
		a=h[2];
		switch(c){
			case"e":
				return null;
			case"n":
				return parseFloat(a);
			case"d":
				return new Date(Date.parse(a));
			case"b":
				return(a=="1");
			case"a":
				d=[];
				if(a!=""){
				Ext.each(a.split("^"),function(i){
					d.push(this.decodeValue(i))
					},this)
				}
				return d;
			case"o":
				d={};

				if(a!=""){
				Ext.each(a.split("^"),function(i){
					g=i.split("=");
					d[g[0]]=this.decodeValue(g[1])
					},this)
				}
				return d;
			default:
				return a
				}
			},
encodeValue:function(c){
	var b,g="",e=0,a,d;
	if(c==null){
		return"e:1"
		}else{
		if(typeof c=="number"){
			b="n:"+c
			}else{
			if(typeof c=="boolean"){
				b="b:"+(c?"1":"0")
				}else{
				if(Ext.isDate(c)){
					b="d:"+c.toGMTString()
					}else{
					if(Ext.isArray(c)){
						for(a=c.length;e<a;e++){
							g+=this.encodeValue(c[e]);
							if(e!=a-1){
								g+="^"
								}
							}
						b="a:"+g
					}else{
					if(typeof c=="object"){
						for(d in c){
							if(typeof c[d]!="function"&&c[d]!==undefined){
								g+=d+"="+this.encodeValue(c[d])+"^"
								}
							}
						b="o:"+g.substring(0,g.length-1)
					}else{
					b="s:"+c
					}
				}
		}
}
}
}
return escape(b)
}
});
Ext.state.Manager=function(){
	var a=new Ext.state.Provider();
	return{
		setProvider:function(b){
			a=b
			},
		get:function(c,b){
			return a.get(c,b)
			},
		set:function(b,c){
			a.set(b,c)
			},
		clear:function(b){
			a.clear(b)
			},
		getProvider:function(){
			return a
			}
		}
}();
Ext.state.CookieProvider=Ext.extend(Ext.state.Provider,{
	constructor:function(a){
		Ext.state.CookieProvider.superclass.constructor.call(this);
		this.path="/";
		this.expires=new Date(new Date().getTime()+(1000*60*60*24*7));
		this.domain=null;
		this.secure=false;
		Ext.apply(this,a);
		this.state=this.readCookies()
		},
	set:function(a,b){
		if(typeof b=="undefined"||b===null){
			this.clear(a);
			return
		}
		this.setCookie(a,b);
		Ext.state.CookieProvider.superclass.set.call(this,a,b)
		},
	clear:function(a){
		this.clearCookie(a);
		Ext.state.CookieProvider.superclass.clear.call(this,a)
		},
	readCookies:function(){
		var d={},h=document.cookie+";",b=/\s?(.*?)=(.*?);/g,g,a,e;
		while((g=b.exec(h))!=null){
			a=g[1];
			e=g[2];
			if(a&&a.substring(0,3)=="ys-"){
				d[a.substr(3)]=this.decodeValue(e)
				}
			}
		return d
	},
setCookie:function(a,b){
	document.cookie="ys-"+a+"="+this.encodeValue(b)+((this.expires==null)?"":("; expires="+this.expires.toGMTString()))+((this.path==null)?"":("; path="+this.path))+((this.domain==null)?"":("; domain="+this.domain))+((this.secure==true)?"; secure":"")
	},
clearCookie:function(a){
	document.cookie="ys-"+a+"=null; expires=Thu, 01-Jan-70 00:00:01 GMT"+((this.path==null)?"":("; path="+this.path))+((this.domain==null)?"":("; domain="+this.domain))+((this.secure==true)?"; secure":"")
	}
});
Ext.DataView=Ext.extend(Ext.BoxComponent,{
	selectedClass:"x-view-selected",
	emptyText:"",
	deferEmptyText:true,
	trackOver:false,
	blockRefresh:false,
	last:false,
	initComponent:function(){
		Ext.DataView.superclass.initComponent.call(this);
		if(Ext.isString(this.tpl)||Ext.isArray(this.tpl)){
			this.tpl=new Ext.XTemplate(this.tpl)
			}
			this.addEvents("beforeclick","click","mouseenter","mouseleave","containerclick","dblclick","contextmenu","containercontextmenu","selectionchange","beforeselect");
		this.store=Ext.StoreMgr.lookup(this.store);
		this.all=new Ext.CompositeElementLite();
		this.selected=new Ext.CompositeElementLite()
		},
	afterRender:function(){
		Ext.DataView.superclass.afterRender.call(this);
		this.mon(this.getTemplateTarget(),{
			click:this.onClick,
			dblclick:this.onDblClick,
			contextmenu:this.onContextMenu,
			scope:this
		});
		if(this.overClass||this.trackOver){
			this.mon(this.getTemplateTarget(),{
				mouseover:this.onMouseOver,
				mouseout:this.onMouseOut,
				scope:this
			})
			}
			if(this.store){
			this.bindStore(this.store,true)
			}
		},
refresh:function(){
	this.clearSelections(false,true);
	var b=this.getTemplateTarget(),a=this.store.getRange();
	b.update("");
	if(a.length<1){
		if(!this.deferEmptyText||this.hasSkippedEmptyText){
			b.update(this.emptyText)
			}
			this.all.clear()
		}else{
		this.tpl.overwrite(b,this.collectData(a,0));
		this.all.fill(Ext.query(this.itemSelector,b.dom));
		this.updateIndexes(0)
		}
		this.hasSkippedEmptyText=true
	},
getTemplateTarget:function(){
	return this.el
	},
prepareData:function(a){
	return a
	},
collectData:function(b,e){
	var d=[],c=0,a=b.length;
	for(;c<a;c++){
		d[d.length]=this.prepareData(b[c].data,e+c,b[c])
		}
		return d
	},
bufferRender:function(a,b){
	var c=document.createElement("div");
	this.tpl.overwrite(c,this.collectData(a,b));
	return Ext.query(this.itemSelector,c)
	},
onUpdate:function(g,a){
	var b=this.store.indexOf(a);
	if(b>-1){
		var e=this.isSelected(b),c=this.all.elements[b],d=this.bufferRender([a],b)[0];
		this.all.replaceElement(b,d,true);
		if(e){
			this.selected.replaceElement(c,d);
			this.all.item(b).addClass(this.selectedClass)
			}
			this.updateIndexes(b,b)
		}
	},
onAdd:function(g,d,e){
	if(this.all.getCount()===0){
		this.refresh();
		return
	}
	var c=this.bufferRender(d,e),h,b=this.all.elements;
	if(e<this.all.getCount()){
		h=this.all.item(e).insertSibling(c,"before",true);
		b.splice.apply(b,[e,0].concat(c))
		}else{
		h=this.all.last().insertSibling(c,"after",true);
		b.push.apply(b,c)
		}
		this.updateIndexes(e)
	},
onRemove:function(c,a,b){
	this.deselect(b);
	this.all.removeElement(b,true);
	this.updateIndexes(b);
	if(this.store.getCount()===0){
		this.refresh()
		}
	},
refreshNode:function(a){
	this.onUpdate(this.store,this.store.getAt(a))
	},
updateIndexes:function(d,c){
	var b=this.all.elements;
	d=d||0;
	c=c||((c===0)?0:(b.length-1));
	for(var a=d;a<=c;a++){
		b[a].viewIndex=a
		}
	},
getStore:function(){
	return this.store
	},
bindStore:function(a,b){
	if(!b&&this.store){
		if(a!==this.store&&this.store.autoDestroy){
			this.store.destroy()
			}else{
			this.store.un("beforeload",this.onBeforeLoad,this);
			this.store.un("datachanged",this.onDataChanged,this);
			this.store.un("add",this.onAdd,this);
			this.store.un("remove",this.onRemove,this);
			this.store.un("update",this.onUpdate,this);
			this.store.un("clear",this.refresh,this)
			}
			if(!a){
			this.store=null
			}
		}
	if(a){
	a=Ext.StoreMgr.lookup(a);
	a.on({
		scope:this,
		beforeload:this.onBeforeLoad,
		datachanged:this.onDataChanged,
		add:this.onAdd,
		remove:this.onRemove,
		update:this.onUpdate,
		clear:this.refresh
		})
	}
	this.store=a;
if(a){
	this.refresh()
	}
},
onDataChanged:function(){
	if(this.blockRefresh!==true){
		this.refresh.apply(this,arguments)
		}
	},
findItemFromChild:function(a){
	return Ext.fly(a).findParent(this.itemSelector,this.getTemplateTarget())
	},
onClick:function(c){
	var b=c.getTarget(this.itemSelector,this.getTemplateTarget()),a;
	if(b){
		a=this.indexOf(b);
		if(this.onItemClick(b,a,c)!==false){
			this.fireEvent("click",this,a,b,c)
			}
		}else{
	if(this.fireEvent("containerclick",this,c)!==false){
		this.onContainerClick(c)
		}
	}
},
onContainerClick:function(a){
	this.clearSelections()
	},
onContextMenu:function(b){
	var a=b.getTarget(this.itemSelector,this.getTemplateTarget());
	if(a){
		this.fireEvent("contextmenu",this,this.indexOf(a),a,b)
		}else{
		this.fireEvent("containercontextmenu",this,b)
		}
	},
onDblClick:function(b){
	var a=b.getTarget(this.itemSelector,this.getTemplateTarget());
	if(a){
		this.fireEvent("dblclick",this,this.indexOf(a),a,b)
		}
	},
onMouseOver:function(b){
	var a=b.getTarget(this.itemSelector,this.getTemplateTarget());
	if(a&&a!==this.lastItem){
		this.lastItem=a;
		Ext.fly(a).addClass(this.overClass);
		this.fireEvent("mouseenter",this,this.indexOf(a),a,b)
		}
	},
onMouseOut:function(a){
	if(this.lastItem){
		if(!a.within(this.lastItem,true,true)){
			Ext.fly(this.lastItem).removeClass(this.overClass);
			this.fireEvent("mouseleave",this,this.indexOf(this.lastItem),this.lastItem,a);
			delete this.lastItem
			}
		}
},
onItemClick:function(b,a,c){
	if(this.fireEvent("beforeclick",this,a,b,c)===false){
		return false
		}
		if(this.multiSelect){
		this.doMultiSelection(b,a,c);
		c.preventDefault()
		}else{
		if(this.singleSelect){
			this.doSingleSelection(b,a,c);
			c.preventDefault()
			}
		}
	return true
},
doSingleSelection:function(b,a,c){
	if(c.ctrlKey&&this.isSelected(a)){
		this.deselect(a)
		}else{
		this.select(a,false)
		}
	},
doMultiSelection:function(c,a,d){
	if(d.shiftKey&&this.last!==false){
		var b=this.last;
		this.selectRange(b,a,d.ctrlKey);
		this.last=b
		}else{
		if((d.ctrlKey||this.simpleSelect)&&this.isSelected(a)){
			this.deselect(a)
			}else{
			this.select(a,d.ctrlKey||d.shiftKey||this.simpleSelect)
			}
		}
},
getSelectionCount:function(){
	return this.selected.getCount()
	},
getSelectedNodes:function(){
	return this.selected.elements
	},
getSelectedIndexes:function(){
	var b=[],d=this.selected.elements,c=0,a=d.length;
	for(;c<a;c++){
		b.push(d[c].viewIndex)
		}
		return b
	},
getSelectedRecords:function(){
	return this.getRecords(this.selected.elements)
	},
getRecords:function(c){
	var b=[],d=0,a=c.length;
	for(;d<a;d++){
		b[b.length]=this.store.getAt(c[d].viewIndex)
		}
		return b
	},
getRecord:function(a){
	return this.store.getAt(a.viewIndex)
	},
clearSelections:function(a,b){
	if((this.multiSelect||this.singleSelect)&&this.selected.getCount()>0){
		if(!b){
			this.selected.removeClass(this.selectedClass)
			}
			this.selected.clear();
		this.last=false;
		if(!a){
			this.fireEvent("selectionchange",this,this.selected.elements)
			}
		}
},
isSelected:function(a){
	return this.selected.contains(this.getNode(a))
	},
deselect:function(a){
	if(this.isSelected(a)){
		a=this.getNode(a);
		this.selected.removeElement(a);
		if(this.last==a.viewIndex){
			this.last=false
			}
			Ext.fly(a).removeClass(this.selectedClass);
		this.fireEvent("selectionchange",this,this.selected.elements)
		}
	},
select:function(d,g,b){
	if(Ext.isArray(d)){
		if(!g){
			this.clearSelections(true)
			}
			for(var c=0,a=d.length;c<a;c++){
			this.select(d[c],true,true)
			}
			if(!b){
			this.fireEvent("selectionchange",this,this.selected.elements)
			}
		}else{
	var e=this.getNode(d);
	if(!g){
		this.clearSelections(true)
		}
		if(e&&!this.isSelected(e)){
		if(this.fireEvent("beforeselect",this,e,this.selected.elements)!==false){
			Ext.fly(e).addClass(this.selectedClass);
			this.selected.add(e);
			this.last=e.viewIndex;
			if(!b){
				this.fireEvent("selectionchange",this,this.selected.elements)
				}
			}
	}
}
},
selectRange:function(c,a,b){
	if(!b){
		this.clearSelections(true)
		}
		this.select(this.getNodes(c,a),true)
	},
getNode:function(b){
	if(Ext.isString(b)){
		return document.getElementById(b)
		}else{
		if(Ext.isNumber(b)){
			return this.all.elements[b]
			}else{
			if(b instanceof Ext.data.Record){
				var a=this.store.indexOf(b);
				return this.all.elements[a]
				}
			}
	}
return b
},
getNodes:function(e,a){
	var d=this.all.elements,b=[],c;
	e=e||0;
	a=!Ext.isDefined(a)?Math.max(d.length-1,0):a;
	if(e<=a){
		for(c=e;c<=a&&d[c];c++){
			b.push(d[c])
			}
		}else{
	for(c=e;c>=a&&d[c];c--){
		b.push(d[c])
		}
	}
	return b
},
indexOf:function(a){
	a=this.getNode(a);
	if(Ext.isNumber(a.viewIndex)){
		return a.viewIndex
		}
		return this.all.indexOf(a)
	},
onBeforeLoad:function(){
	if(this.loadingText){
		this.clearSelections(false,true);
		this.getTemplateTarget().update('<div class="loading-indicator">'+this.loadingText+"</div>");
		this.all.clear()
		}
	},
onDestroy:function(){
	this.all.clear();
	this.selected.clear();
	Ext.DataView.superclass.onDestroy.call(this);
	this.bindStore(null)
	}
});
Ext.DataView.prototype.setStore=Ext.DataView.prototype.bindStore;
Ext.reg("dataview",Ext.DataView);
Ext.list.ListView=Ext.extend(Ext.DataView,{
	itemSelector:"dl",
	selectedClass:"x-list-selected",
	overClass:"x-list-over",
	scrollOffset:undefined,
	columnResize:true,
	columnSort:true,
	maxColumnWidth:Ext.isIE?99:100,
	initComponent:function(){
		if(this.columnResize){
			this.colResizer=new Ext.list.ColumnResizer(this.colResizer);
			this.colResizer.init(this)
			}
			if(this.columnSort){
			this.colSorter=new Ext.list.Sorter(this.columnSort);
			this.colSorter.init(this)
			}
			if(!this.internalTpl){
			this.internalTpl=new Ext.XTemplate('<div class="x-list-header"><div class="x-list-header-inner">','<tpl for="columns">','<div style="width:{[values.width*100]}%;text-align:{align};"><em unselectable="on" id="',this.id,'-xlhd-{#}">',"{header}","</em></div>","</tpl>",'<div class="x-clear"></div>',"</div></div>",'<div class="x-list-body"><div class="x-list-body-inner">',"</div></div>")
			}
			if(!this.tpl){
			this.tpl=new Ext.XTemplate('<tpl for="rows">',"<dl>",'<tpl for="parent.columns">','<dt style="width:{[values.width*100]}%;text-align:{align};">','<em unselectable="on"<tpl if="cls"> class="{cls}</tpl>">',"{[values.tpl.apply(parent)]}","</em></dt>","</tpl>",'<div class="x-clear"></div>',"</dl>","</tpl>")
			}
			var l=this.columns,h=0,k=0,m=l.length,b=[];
		for(var g=0;g<m;g++){
			var n=l[g];
			if(!n.isColumn){
				n.xtype=n.xtype?(/^lv/.test(n.xtype)?n.xtype:"lv"+n.xtype):"lvcolumn";
				n=Ext.create(n)
				}
				if(n.width){
				h+=n.width*100;
				if(h>this.maxColumnWidth){
					n.width-=(h-this.maxColumnWidth)/100
					}
					k++
			}
			b.push(n)
			}
			l=this.columns=b;
		if(k<m){
			var d=m-k;
			if(h<this.maxColumnWidth){
				var a=((this.maxColumnWidth-h)/d)/100;
				for(var e=0;e<m;e++){
					var n=l[e];
					if(!n.width){
						n.width=a
						}
					}
				}
		}
Ext.list.ListView.superclass.initComponent.call(this)
	},
onRender:function(){
	this.autoEl={
		cls:"x-list-wrap"
	};

	Ext.list.ListView.superclass.onRender.apply(this,arguments);
	this.internalTpl.overwrite(this.el,{
		columns:this.columns
		});
	this.innerBody=Ext.get(this.el.dom.childNodes[1].firstChild);
	this.innerHd=Ext.get(this.el.dom.firstChild.firstChild);
	if(this.hideHeaders){
		this.el.dom.firstChild.style.display="none"
		}
	},
getTemplateTarget:function(){
	return this.innerBody
	},
collectData:function(){
	var a=Ext.list.ListView.superclass.collectData.apply(this,arguments);
	return{
		columns:this.columns,
		rows:a
	}
},
verifyInternalSize:function(){
	if(this.lastSize){
		this.onResize(this.lastSize.width,this.lastSize.height)
		}
	},
onResize:function(c,e){
	var b=this.innerBody.dom,g=this.innerHd.dom,d=c-Ext.num(this.scrollOffset,Ext.getScrollBarWidth())+"px",a;
	if(!b){
		return
	}
	a=b.parentNode;
	if(Ext.isNumber(c)){
		if(this.reserveScrollOffset||((a.offsetWidth-a.clientWidth)>10)){
			b.style.width=d;
			g.style.width=d
			}else{
			b.style.width=c+"px";
			g.style.width=c+"px";
			setTimeout(function(){
				if((a.offsetWidth-a.clientWidth)>10){
					b.style.width=d;
					g.style.width=d
					}
				},10)
		}
	}
if(Ext.isNumber(e)){
	a.style.height=Math.max(0,e-g.parentNode.offsetHeight)+"px"
	}
},
updateIndexes:function(){
	Ext.list.ListView.superclass.updateIndexes.apply(this,arguments);
	this.verifyInternalSize()
	},
findHeaderIndex:function(g){
	g=g.dom||g;
	var a=g.parentNode,d=a.parentNode.childNodes,b=0,e;
	for(;e=d[b];b++){
		if(e==a){
			return b
			}
		}
	return -1
},
setHdWidths:function(){
	var d=this.innerHd.dom.getElementsByTagName("div"),c=0,b=this.columns,a=b.length;
	for(;c<a;c++){
		d[c].style.width=(b[c].width*100)+"%"
		}
	}
});
Ext.reg("listview",Ext.list.ListView);
Ext.ListView=Ext.list.ListView;
Ext.list.Column=Ext.extend(Object,{
	isColumn:true,
	align:"left",
	header:"",
	width:null,
	cls:"",
	constructor:function(a){
		if(!a.tpl){
			a.tpl=new Ext.XTemplate("{"+a.dataIndex+"}")
			}else{
			if(Ext.isString(a.tpl)){
				a.tpl=new Ext.XTemplate(a.tpl)
				}
			}
		Ext.apply(this,a)
	}
});
Ext.reg("lvcolumn",Ext.list.Column);
Ext.list.NumberColumn=Ext.extend(Ext.list.Column,{
	format:"0,000.00",
	constructor:function(a){
		a.tpl=a.tpl||new Ext.XTemplate("{"+a.dataIndex+':number("'+(a.format||this.format)+'")}');
		Ext.list.NumberColumn.superclass.constructor.call(this,a)
		}
	});
Ext.reg("lvnumbercolumn",Ext.list.NumberColumn);
Ext.list.DateColumn=Ext.extend(Ext.list.Column,{
	format:"m/d/Y",
	constructor:function(a){
		a.tpl=a.tpl||new Ext.XTemplate("{"+a.dataIndex+':date("'+(a.format||this.format)+'")}');
		Ext.list.DateColumn.superclass.constructor.call(this,a)
		}
	});
Ext.reg("lvdatecolumn",Ext.list.DateColumn);
Ext.list.BooleanColumn=Ext.extend(Ext.list.Column,{
	trueText:"true",
	falseText:"false",
	undefinedText:"&#160;",
	constructor:function(e){
		e.tpl=e.tpl||new Ext.XTemplate("{"+e.dataIndex+":this.format}");
		var b=this.trueText,d=this.falseText,a=this.undefinedText;
		e.tpl.format=function(c){
			if(c===undefined){
				return a
				}
				if(!c||c==="false"){
				return d
				}
				return b
			};

		Ext.list.DateColumn.superclass.constructor.call(this,e)
		}
	});
Ext.reg("lvbooleancolumn",Ext.list.BooleanColumn);
Ext.list.ColumnResizer=Ext.extend(Ext.util.Observable,{
	minPct:0.05,
	constructor:function(a){
		Ext.apply(this,a);
		Ext.list.ColumnResizer.superclass.constructor.call(this)
		},
	init:function(a){
		this.view=a;
		a.on("render",this.initEvents,this)
		},
	initEvents:function(a){
		a.mon(a.innerHd,"mousemove",this.handleHdMove,this);
		this.tracker=new Ext.dd.DragTracker({
			onBeforeStart:this.onBeforeStart.createDelegate(this),
			onStart:this.onStart.createDelegate(this),
			onDrag:this.onDrag.createDelegate(this),
			onEnd:this.onEnd.createDelegate(this),
			tolerance:3,
			autoStart:300
		});
		this.tracker.initEl(a.innerHd);
		a.on("beforedestroy",this.tracker.destroy,this.tracker)
		},
	handleHdMove:function(i,d){
		var c=5,b=i.getPageX(),k=i.getTarget("em",3,true);
		if(k){
			var h=k.getRegion(),g=k.dom.style,a=k.dom.parentNode;
			if(b-h.left<=c&&a!=a.parentNode.firstChild){
				this.activeHd=Ext.get(a.previousSibling.firstChild);
				g.cursor=Ext.isWebKit?"e-resize":"col-resize"
				}else{
				if(h.right-b<=c&&a!=a.parentNode.lastChild.previousSibling){
					this.activeHd=k;
					g.cursor=Ext.isWebKit?"w-resize":"col-resize"
					}else{
					delete this.activeHd;
					g.cursor=""
					}
				}
		}
},
onBeforeStart:function(a){
	this.dragHd=this.activeHd;
	return !!this.dragHd
	},
onStart:function(g){
	var d=this,b=d.view,c=d.dragHd,a=d.tracker.getXY()[0];
	d.proxy=b.el.createChild({
		cls:"x-list-resizer"
	});
	d.dragX=c.getX();
	d.headerIndex=b.findHeaderIndex(c);
	d.headersDisabled=b.disableHeaders;
	b.disableHeaders=true;
	d.proxy.setHeight(b.el.getHeight());
	d.proxy.setX(d.dragX);
	d.proxy.setWidth(a-d.dragX);
	this.setBoundaries()
	},
setBoundaries:function(k){
	var l=this.view,h=this.headerIndex,c=l.innerHd.getWidth(),k=l.innerHd.getX(),b=Math.ceil(c*this.minPct),m=c-b,e=l.columns.length,d=l.innerHd.select("em",true),g=b+k,a=m+k,i;
	if(e==2){
		this.minX=g;
		this.maxX=a
		}else{
		i=d.item(h+2);
		this.minX=d.item(h).getX()+b;
		this.maxX=i?i.getX()-b:a;
		if(h==0){
			this.minX=g
			}else{
			if(h==e-2){
				this.maxX=a
				}
			}
	}
},
onDrag:function(c){
	var b=this,a=b.tracker.getXY()[0].constrain(b.minX,b.maxX);
	b.proxy.setWidth(a-this.dragX)
	},
onEnd:function(i){
	var g=this.proxy.getWidth(),h=this.headerIndex,m=this.view,c=m.columns,b=m.innerHd.getWidth(),l=Math.ceil(g*m.maxColumnWidth/b)/100,d=this.headersDisabled,n=c[h],k=c[h+1],a=n.width+k.width;
	this.proxy.remove();
	n.width=l;
	k.width=a-l;
	delete this.dragHd;
	m.setHdWidths();
	m.refresh();
	setTimeout(function(){
		m.disableHeaders=d
		},100)
	}
});
Ext.ListView.ColumnResizer=Ext.list.ColumnResizer;
Ext.list.Sorter=Ext.extend(Ext.util.Observable,{
	sortClasses:["sort-asc","sort-desc"],
	constructor:function(a){
		Ext.apply(this,a);
		Ext.list.Sorter.superclass.constructor.call(this)
		},
	init:function(a){
		this.view=a;
		a.on("render",this.initEvents,this)
		},
	initEvents:function(a){
		a.mon(a.innerHd,"click",this.onHdClick,this);
		a.innerHd.setStyle("cursor","pointer");
		a.mon(a.store,"datachanged",this.updateSortState,this);
		this.updateSortState.defer(10,this,[a.store])
		},
	updateSortState:function(c){
		var g=c.getSortState();
		if(!g){
			return
		}
		this.sortState=g;
		var e=this.view.columns,h=-1;
		for(var d=0,a=e.length;d<a;d++){
			if(e[d].dataIndex==g.field){
				h=d;
				break
			}
		}
		if(h!=-1){
		var b=g.direction;
		this.updateSortIcon(h,b)
		}
	},
updateSortIcon:function(b,a){
	var d=this.sortClasses;
	var c=this.view.innerHd.select("em").removeClass(d);
	c.item(b).addClass(d[a=="DESC"?1:0])
	},
onHdClick:function(c){
	var b=c.getTarget("em",3);
	if(b&&!this.view.disableHeaders){
		var a=this.view.findHeaderIndex(b);
		this.view.store.sort(this.view.columns[a].dataIndex)
		}
	}
});
Ext.ListView.Sorter=Ext.list.Sorter;
Ext.TabPanel=Ext.extend(Ext.Panel,{
	deferredRender:true,
	tabWidth:120,
	minTabWidth:30,
	resizeTabs:false,
	enableTabScroll:false,
	scrollIncrement:0,
	scrollRepeatInterval:400,
	scrollDuration:0.35,
	animScroll:true,
	tabPosition:"top",
	baseCls:"x-tab-panel",
	autoTabs:false,
	autoTabSelector:"div.x-tab",
	activeTab:undefined,
	tabMargin:2,
	plain:false,
	wheelIncrement:20,
	idDelimiter:"__",
	itemCls:"x-tab-item",
	elements:"body",
	headerAsText:false,
	frame:false,
	hideBorders:true,
	initComponent:function(){
		this.frame=false;
		Ext.TabPanel.superclass.initComponent.call(this);
		this.addEvents("beforetabchange","tabchange","contextmenu");
		this.setLayout(new Ext.layout.CardLayout(Ext.apply({
			layoutOnCardChange:this.layoutOnTabChange,
			deferredRender:this.deferredRender
			},this.layoutConfig)));
		if(this.tabPosition=="top"){
			this.elements+=",header";
			this.stripTarget="header"
			}else{
			this.elements+=",footer";
			this.stripTarget="footer"
			}
			if(!this.stack){
			this.stack=Ext.TabPanel.AccessStack()
			}
			this.initItems()
		},
	onRender:function(c,a){
		Ext.TabPanel.superclass.onRender.call(this,c,a);
		if(this.plain){
			var g=this.tabPosition=="top"?"header":"footer";
			this[g].addClass("x-tab-panel-"+g+"-plain")
			}
			var b=this[this.stripTarget];
		this.stripWrap=b.createChild({
			cls:"x-tab-strip-wrap",
			cn:{
				tag:"ul",
				cls:"x-tab-strip x-tab-strip-"+this.tabPosition
				}
			});
	var e=(this.tabPosition=="bottom"?this.stripWrap:null);
	b.createChild({
		cls:"x-tab-strip-spacer"
	},e);
	this.strip=new Ext.Element(this.stripWrap.dom.firstChild);
	this.edge=this.strip.createChild({
		tag:"li",
		cls:"x-tab-edge",
		cn:[{
			tag:"span",
			cls:"x-tab-strip-text",
			cn:"&#160;"
		}]
		});
	this.strip.createChild({
		cls:"x-clear"
	});
	this.body.addClass("x-tab-panel-body-"+this.tabPosition);
	if(!this.itemTpl){
		var d=new Ext.Template('<li class="{cls}" id="{id}"><a class="x-tab-strip-close"></a>','<a class="x-tab-right" href="#"><em class="x-tab-left">','<span class="x-tab-strip-inner"><span class="x-tab-strip-text {iconCls}">{text}</span></span>',"</em></a></li>");
		d.disableFormats=true;
		d.compile();
		Ext.TabPanel.prototype.itemTpl=d
		}
		this.items.each(this.initTab,this)
	},
afterRender:function(){
	Ext.TabPanel.superclass.afterRender.call(this);
	if(this.autoTabs){
		this.readTabs(false)
		}
		if(this.activeTab!==undefined){
		var a=Ext.isObject(this.activeTab)?this.activeTab:this.items.get(this.activeTab);
		delete this.activeTab;
		this.setActiveTab(a)
		}
	},
initEvents:function(){
	Ext.TabPanel.superclass.initEvents.call(this);
	this.mon(this.strip,{
		scope:this,
		mousedown:this.onStripMouseDown,
		contextmenu:this.onStripContextMenu
		});
	if(this.enableTabScroll){
		this.mon(this.strip,"mousewheel",this.onWheel,this)
		}
	},
findTargets:function(c){
	var b=null,a=c.getTarget("li:not(.x-tab-edge)",this.strip);
	if(a){
		b=this.getComponent(a.id.split(this.idDelimiter)[1]);
		if(b.disabled){
			return{
				close:null,
				item:null,
				el:null
			}
		}
	}
return{
	close:c.getTarget(".x-tab-strip-close",this.strip),
	item:b,
	el:a
}
},
onStripMouseDown:function(b){
	if(b.button!==0){
		return
	}
	b.preventDefault();
	var a=this.findTargets(b);
	if(a.close){
		if(a.item.fireEvent("beforeclose",a.item)!==false){
			a.item.fireEvent("close",a.item);
			this.remove(a.item)
			}
			return
	}
	if(a.item&&a.item!=this.activeTab){
		this.setActiveTab(a.item)
		}
	},
onStripContextMenu:function(b){
	b.preventDefault();
	var a=this.findTargets(b);
	if(a.item){
		this.fireEvent("contextmenu",this,a.item,b)
		}
	},
readTabs:function(d){
	if(d===true){
		this.items.each(function(h){
			this.remove(h)
			},this)
		}
		var c=this.el.query(this.autoTabSelector);
	for(var b=0,a=c.length;b<a;b++){
		var e=c[b],g=e.getAttribute("title");
		e.removeAttribute("title");
		this.add({
			title:g,
			contentEl:e
		})
		}
	},
initTab:function(d,b){
	var e=this.strip.dom.childNodes[b],g=this.getTemplateArgs(d),c=e?this.itemTpl.insertBefore(e,g):this.itemTpl.append(this.strip,g),a="x-tab-strip-over",h=Ext.get(c);
	h.hover(function(){
		if(!d.disabled){
			h.addClass(a)
			}
		},function(){
		h.removeClass(a)
		});
if(d.tabTip){
	h.child("span.x-tab-strip-text",true).qtip=d.tabTip
	}
	d.tabEl=c;
h.select("a").on("click",function(i){
	if(!i.getPageX()){
		this.onStripMouseDown(i)
		}
	},this,{
	preventDefault:true
});
d.on({
	scope:this,
	disable:this.onItemDisabled,
	enable:this.onItemEnabled,
	titlechange:this.onItemTitleChanged,
	iconchange:this.onItemIconChanged,
	beforeshow:this.onBeforeShowItem
	})
},
getTemplateArgs:function(b){
	var a=b.closable?"x-tab-strip-closable":"";
	if(b.disabled){
		a+=" x-item-disabled"
		}
		if(b.iconCls){
		a+=" x-tab-with-icon"
		}
		if(b.tabCls){
		a+=" "+b.tabCls
		}
		return{
		id:this.id+this.idDelimiter+b.getItemId(),
		text:b.title,
		cls:a,
		iconCls:b.iconCls||""
		}
	},
onAdd:function(b){
	Ext.TabPanel.superclass.onAdd.call(this,b);
	if(this.rendered){
		var a=this.items;
		this.initTab(b,a.indexOf(b));
		this.delegateUpdates()
		}
	},
onBeforeAdd:function(b){
	var a=b.events?(this.items.containsKey(b.getItemId())?b:null):this.items.get(b);
	if(a){
		this.setActiveTab(b);
		return false
		}
		Ext.TabPanel.superclass.onBeforeAdd.apply(this,arguments);
	var c=b.elements;
	b.elements=c?c.replace(",header",""):c;
	b.border=(b.border===true)
	},
onRemove:function(d){
	var b=Ext.get(d.tabEl);
	if(b){
		b.select("a").removeAllListeners();
		Ext.destroy(b)
		}
		Ext.TabPanel.superclass.onRemove.call(this,d);
	this.stack.remove(d);
	delete d.tabEl;
	d.un("disable",this.onItemDisabled,this);
	d.un("enable",this.onItemEnabled,this);
	d.un("titlechange",this.onItemTitleChanged,this);
	d.un("iconchange",this.onItemIconChanged,this);
	d.un("beforeshow",this.onBeforeShowItem,this);
	if(d==this.activeTab){
		var a=this.stack.next();
		if(a){
			this.setActiveTab(a)
			}else{
			if(this.items.getCount()>0){
				this.setActiveTab(0)
				}else{
				this.setActiveTab(null)
				}
			}
	}
if(!this.destroying){
	this.delegateUpdates()
	}
},
onBeforeShowItem:function(a){
	if(a!=this.activeTab){
		this.setActiveTab(a);
		return false
		}
	},
onItemDisabled:function(b){
	var a=this.getTabEl(b);
	if(a){
		Ext.fly(a).addClass("x-item-disabled")
		}
		this.stack.remove(b)
	},
onItemEnabled:function(b){
	var a=this.getTabEl(b);
	if(a){
		Ext.fly(a).removeClass("x-item-disabled")
		}
	},
onItemTitleChanged:function(b){
	var a=this.getTabEl(b);
	if(a){
		Ext.fly(a).child("span.x-tab-strip-text",true).innerHTML=b.title
		}
	},
onItemIconChanged:function(d,a,c){
	var b=this.getTabEl(d);
	if(b){
		b=Ext.get(b);
		b.child("span.x-tab-strip-text").replaceClass(c,a);
		b[Ext.isEmpty(a)?"removeClass":"addClass"]("x-tab-with-icon")
		}
	},
getTabEl:function(a){
	var b=this.getComponent(a);
	return b?b.tabEl:null
	},
onResize:function(){
	Ext.TabPanel.superclass.onResize.apply(this,arguments);
	this.delegateUpdates()
	},
beginUpdate:function(){
	this.suspendUpdates=true
	},
endUpdate:function(){
	this.suspendUpdates=false;
	this.delegateUpdates()
	},
hideTabStripItem:function(b){
	b=this.getComponent(b);
	var a=this.getTabEl(b);
	if(a){
		a.style.display="none";
		this.delegateUpdates()
		}
		this.stack.remove(b)
	},
unhideTabStripItem:function(b){
	b=this.getComponent(b);
	var a=this.getTabEl(b);
	if(a){
		a.style.display="";
		this.delegateUpdates()
		}
	},
delegateUpdates:function(){
	var a=this.rendered;
	if(this.suspendUpdates){
		return
	}
	if(this.resizeTabs&&a){
		this.autoSizeTabs()
		}
		if(this.enableTabScroll&&a){
		this.autoScrollTabs()
		}
	},
autoSizeTabs:function(){
	var h=this.items.length,b=this.tabPosition!="bottom"?"header":"footer",c=this[b].dom.offsetWidth,a=this[b].dom.clientWidth;
	if(!this.resizeTabs||h<1||!a){
		return
	}
	var l=Math.max(Math.min(Math.floor((a-4)/h)-this.tabMargin,this.tabWidth),this.minTabWidth);
	this.lastTabWidth=l;
	var n=this.strip.query("li:not(.x-tab-edge)");
	for(var e=0,k=n.length;e<k;e++){
		var m=n[e],o=Ext.fly(m).child(".x-tab-strip-inner",true),g=m.offsetWidth,d=o.offsetWidth;
		o.style.width=(l-(g-d))+"px"
		}
	},
adjustBodyWidth:function(a){
	if(this.header){
		this.header.setWidth(a)
		}
		if(this.footer){
		this.footer.setWidth(a)
		}
		return a
	},
setActiveTab:function(c){
	c=this.getComponent(c);
	if(this.fireEvent("beforetabchange",this,c,this.activeTab)===false){
		return
	}
	if(!this.rendered){
		this.activeTab=c;
		return
	}
	if(this.activeTab!=c){
		if(this.activeTab){
			var a=this.getTabEl(this.activeTab);
			if(a){
				Ext.fly(a).removeClass("x-tab-strip-active")
				}
			}
		this.activeTab=c;
	if(c){
		var b=this.getTabEl(c);
		Ext.fly(b).addClass("x-tab-strip-active");
		this.stack.add(c);
		this.layout.setActiveItem(c);
		this.delegateUpdates();
		if(this.scrolling){
			this.scrollToTab(c,this.animScroll)
			}
		}
	this.fireEvent("tabchange",this,c)
}
},
getActiveTab:function(){
	return this.activeTab||null
	},
getItem:function(a){
	return this.getComponent(a)
	},
autoScrollTabs:function(){
	this.pos=this.tabPosition=="bottom"?this.footer:this.header;
	var h=this.items.length,d=this.pos.dom.offsetWidth,c=this.pos.dom.clientWidth,g=this.stripWrap,e=g.dom,b=e.offsetWidth,i=this.getScrollPos(),a=this.edge.getOffsetsTo(this.stripWrap)[0]+i;
	if(!this.enableTabScroll||b<20){
		return
	}
	if(h==0||a<=c){
		e.scrollLeft=0;
		g.setWidth(c);
		if(this.scrolling){
			this.scrolling=false;
			this.pos.removeClass("x-tab-scrolling");
			this.scrollLeft.hide();
			this.scrollRight.hide();
			if(Ext.isAir||Ext.isWebKit){
				e.style.marginLeft="";
				e.style.marginRight=""
				}
			}
	}else{
	if(!this.scrolling){
		this.pos.addClass("x-tab-scrolling");
		if(Ext.isAir||Ext.isWebKit){
			e.style.marginLeft="18px";
			e.style.marginRight="18px"
			}
		}
	c-=g.getMargins("lr");
g.setWidth(c>20?c:20);
if(!this.scrolling){
	if(!this.scrollLeft){
		this.createScrollers()
		}else{
		this.scrollLeft.show();
		this.scrollRight.show()
		}
	}
this.scrolling=true;
if(i>(a-c)){
	e.scrollLeft=a-c
	}else{
	this.scrollToTab(this.activeTab,false)
	}
	this.updateScrollButtons()
}
},
createScrollers:function(){
	this.pos.addClass("x-tab-scrolling-"+this.tabPosition);
	var c=this.stripWrap.dom.offsetHeight;
	var a=this.pos.insertFirst({
		cls:"x-tab-scroller-left"
	});
	a.setHeight(c);
	a.addClassOnOver("x-tab-scroller-left-over");
	this.leftRepeater=new Ext.util.ClickRepeater(a,{
		interval:this.scrollRepeatInterval,
		handler:this.onScrollLeft,
		scope:this
	});
	this.scrollLeft=a;
	var b=this.pos.insertFirst({
		cls:"x-tab-scroller-right"
	});
	b.setHeight(c);
	b.addClassOnOver("x-tab-scroller-right-over");
	this.rightRepeater=new Ext.util.ClickRepeater(b,{
		interval:this.scrollRepeatInterval,
		handler:this.onScrollRight,
		scope:this
	});
	this.scrollRight=b
	},
getScrollWidth:function(){
	return this.edge.getOffsetsTo(this.stripWrap)[0]+this.getScrollPos()
	},
getScrollPos:function(){
	return parseInt(this.stripWrap.dom.scrollLeft,10)||0
	},
getScrollArea:function(){
	return parseInt(this.stripWrap.dom.clientWidth,10)||0
	},
getScrollAnim:function(){
	return{
		duration:this.scrollDuration,
		callback:this.updateScrollButtons,
		scope:this
	}
},
getScrollIncrement:function(){
	return this.scrollIncrement||(this.resizeTabs?this.lastTabWidth+2:100)
	},
scrollToTab:function(e,a){
	if(!e){
		return
	}
	var c=this.getTabEl(e),h=this.getScrollPos(),d=this.getScrollArea(),g=Ext.fly(c).getOffsetsTo(this.stripWrap)[0]+h,b=g+c.offsetWidth;
	if(g<h){
		this.scrollTo(g,a)
		}else{
		if(b>(h+d)){
			this.scrollTo(b-d,a)
			}
		}
},
scrollTo:function(b,a){
	this.stripWrap.scrollTo("left",b,a?this.getScrollAnim():false);
	if(!a){
		this.updateScrollButtons()
		}
	},
onWheel:function(g){
	var h=g.getWheelDelta()*this.wheelIncrement*-1;
	g.stopEvent();
	var i=this.getScrollPos(),c=i+h,a=this.getScrollWidth()-this.getScrollArea();
	var b=Math.max(0,Math.min(a,c));
	if(b!=i){
		this.scrollTo(b,false)
		}
	},
onScrollRight:function(){
	var a=this.getScrollWidth()-this.getScrollArea(),c=this.getScrollPos(),b=Math.min(a,c+this.getScrollIncrement());
	if(b!=c){
		this.scrollTo(b,this.animScroll)
		}
	},
onScrollLeft:function(){
	var b=this.getScrollPos(),a=Math.max(0,b-this.getScrollIncrement());
	if(a!=b){
		this.scrollTo(a,this.animScroll)
		}
	},
updateScrollButtons:function(){
	var a=this.getScrollPos();
	this.scrollLeft[a===0?"addClass":"removeClass"]("x-tab-scroller-left-disabled");
	this.scrollRight[a>=(this.getScrollWidth()-this.getScrollArea())?"addClass":"removeClass"]("x-tab-scroller-right-disabled")
	},
beforeDestroy:function(){
	Ext.destroy(this.leftRepeater,this.rightRepeater);
	this.deleteMembers("strip","edge","scrollLeft","scrollRight","stripWrap");
	this.activeTab=null;
	Ext.TabPanel.superclass.beforeDestroy.apply(this)
	}
});
Ext.reg("tabpanel",Ext.TabPanel);
Ext.TabPanel.prototype.activate=Ext.TabPanel.prototype.setActiveTab;
Ext.TabPanel.AccessStack=function(){
	var a=[];
	return{
		add:function(b){
			a.push(b);
			if(a.length>10){
				a.shift()
				}
			},
	remove:function(e){
		var d=[];
		for(var c=0,b=a.length;c<b;c++){
			if(a[c]!=e){
				d.push(a[c])
				}
			}
		a=d
	},
next:function(){
	return a.pop()
	}
}
};

Ext.Button=Ext.extend(Ext.BoxComponent,{
	hidden:false,
	disabled:false,
	pressed:false,
	enableToggle:false,
	menuAlign:"tl-bl?",
	type:"button",
	menuClassTarget:"tr:nth(2)",
	clickEvent:"click",
	handleMouseEvents:true,
	tooltipType:"qtip",
	buttonSelector:"button:first-child",
	scale:"small",
	iconAlign:"left",
	arrowAlign:"right",
	initComponent:function(){
		if(this.menu){
			this.menu=Ext.menu.MenuMgr.get(this.menu);
			this.menu.ownerCt=this
			}
			Ext.Button.superclass.initComponent.call(this);
		this.addEvents("click","toggle","mouseover","mouseout","menushow","menuhide","menutriggerover","menutriggerout");
		if(this.menu){
			this.menu.ownerCt=undefined
			}
			if(Ext.isString(this.toggleGroup)){
			this.enableToggle=true
			}
		},
getTemplateArgs:function(){
	return[this.type,"x-btn-"+this.scale+" x-btn-icon-"+this.scale+"-"+this.iconAlign,this.getMenuClass(),this.cls,this.id]
	},
setButtonClass:function(){
	if(this.useSetClass){
		if(!Ext.isEmpty(this.oldCls)){
			this.el.removeClass([this.oldCls,"x-btn-pressed"])
			}
			this.oldCls=(this.iconCls||this.icon)?(this.text?"x-btn-text-icon":"x-btn-icon"):"x-btn-noicon";
		this.el.addClass([this.oldCls,this.pressed?"x-btn-pressed":null])
		}
	},
getMenuClass:function(){
	return this.menu?(this.arrowAlign!="bottom"?"x-btn-arrow":"x-btn-arrow-bottom"):""
	},
onRender:function(c,a){
	if(!this.template){
		if(!Ext.Button.buttonTemplate){
			Ext.Button.buttonTemplate=new Ext.Template('<table id="{4}" cellspacing="0" class="x-btn {3}"><tbody class="{1}">','<tr><td class="x-btn-tl"><i>&#160;</i></td><td class="x-btn-tc"></td><td class="x-btn-tr"><i>&#160;</i></td></tr>','<tr><td class="x-btn-ml"><i>&#160;</i></td><td class="x-btn-mc"><em class="{2}" unselectable="on"><button type="{0}"></button></em></td><td class="x-btn-mr"><i>&#160;</i></td></tr>','<tr><td class="x-btn-bl"><i>&#160;</i></td><td class="x-btn-bc"></td><td class="x-btn-br"><i>&#160;</i></td></tr>',"</tbody></table>");
			Ext.Button.buttonTemplate.compile()
			}
			this.template=Ext.Button.buttonTemplate
		}
		var b,d=this.getTemplateArgs();
	if(a){
		b=this.template.insertBefore(a,d,true)
		}else{
		b=this.template.append(c,d,true)
		}
		this.btnEl=b.child(this.buttonSelector);
	this.mon(this.btnEl,{
		scope:this,
		focus:this.onFocus,
		blur:this.onBlur
		});
	this.initButtonEl(b,this.btnEl);
	Ext.ButtonToggleMgr.register(this)
	},
initButtonEl:function(b,c){
	this.el=b;
	this.setIcon(this.icon);
	this.setText(this.text);
	this.setIconClass(this.iconCls);
	if(Ext.isDefined(this.tabIndex)){
		c.dom.tabIndex=this.tabIndex
		}
		if(this.tooltip){
		this.setTooltip(this.tooltip,true)
		}
		if(this.handleMouseEvents){
		this.mon(b,{
			scope:this,
			mouseover:this.onMouseOver,
			mousedown:this.onMouseDown
			})
		}
		if(this.menu){
		this.mon(this.menu,{
			scope:this,
			show:this.onMenuShow,
			hide:this.onMenuHide
			})
		}
		if(this.repeat){
		var a=new Ext.util.ClickRepeater(b,Ext.isObject(this.repeat)?this.repeat:{});
		this.mon(a,"click",this.onRepeatClick,this)
		}else{
		this.mon(b,this.clickEvent,this.onClick,this)
		}
	},
afterRender:function(){
	Ext.Button.superclass.afterRender.call(this);
	this.useSetClass=true;
	this.setButtonClass();
	this.doc=Ext.getDoc();
	this.doAutoWidth()
	},
setIconClass:function(a){
	this.iconCls=a;
	if(this.el){
		this.btnEl.dom.className="";
		this.btnEl.addClass(["x-btn-text",a||""]);
		this.setButtonClass()
		}
		return this
	},
setTooltip:function(b,a){
	if(this.rendered){
		if(!a){
			this.clearTip()
			}
			if(Ext.isObject(b)){
			Ext.QuickTips.register(Ext.apply({
				target:this.btnEl.id
				},b));
			this.tooltip=b
			}else{
			this.btnEl.dom[this.tooltipType]=b
			}
		}else{
	this.tooltip=b
	}
	return this
},
clearTip:function(){
	if(Ext.isObject(this.tooltip)){
		Ext.QuickTips.unregister(this.btnEl)
		}
	},
beforeDestroy:function(){
	if(this.rendered){
		this.clearTip()
		}
		if(this.menu&&this.destroyMenu!==false){
		Ext.destroy(this.btnEl,this.menu)
		}
		Ext.destroy(this.repeater)
	},
onDestroy:function(){
	if(this.rendered){
		this.doc.un("mouseover",this.monitorMouseOver,this);
		this.doc.un("mouseup",this.onMouseUp,this);
		delete this.doc;
		delete this.btnEl;
		Ext.ButtonToggleMgr.unregister(this)
		}
		Ext.Button.superclass.onDestroy.call(this)
	},
doAutoWidth:function(){
	if(this.autoWidth!==false&&this.el&&this.text&&this.width===undefined){
		this.el.setWidth("auto");
		if(Ext.isIE7&&Ext.isStrict){
			var a=this.btnEl;
			if(a&&a.getWidth()>20){
				a.clip();
				a.setWidth(Ext.util.TextMetrics.measure(a,this.text).width+a.getFrameWidth("lr"))
				}
			}
		if(this.minWidth){
		if(this.el.getWidth()<this.minWidth){
			this.el.setWidth(this.minWidth)
			}
		}
}
},
setHandler:function(b,a){
	this.handler=b;
	this.scope=a;
	return this
	},
setText:function(a){
	this.text=a;
	if(this.el){
		this.btnEl.update(a||"&#160;");
		this.setButtonClass()
		}
		this.doAutoWidth();
	return this
	},
setIcon:function(a){
	this.icon=a;
	if(this.el){
		this.btnEl.setStyle("background-image",a?"url("+a+")":"");
		this.setButtonClass()
		}
		return this
	},
getText:function(){
	return this.text
	},
toggle:function(b,a){
	b=b===undefined?!this.pressed:!!b;
	if(b!=this.pressed){
		if(this.rendered){
			this.el[b?"addClass":"removeClass"]("x-btn-pressed")
			}
			this.pressed=b;
		if(!a){
			this.fireEvent("toggle",this,b);
			if(this.toggleHandler){
				this.toggleHandler.call(this.scope||this,this,b)
				}
			}
	}
return this
},
onDisable:function(){
	this.onDisableChange(true)
	},
onEnable:function(){
	this.onDisableChange(false)
	},
onDisableChange:function(a){
	if(this.el){
		if(!Ext.isIE6||!this.text){
			this.el[a?"addClass":"removeClass"](this.disabledClass)
			}
			this.el.dom.disabled=a
		}
		this.disabled=a
	},
showMenu:function(){
	if(this.rendered&&this.menu){
		if(this.tooltip){
			Ext.QuickTips.getQuickTip().cancelShow(this.btnEl)
			}
			if(this.menu.isVisible()){
			this.menu.hide()
			}
			this.menu.ownerCt=this;
		this.menu.show(this.el,this.menuAlign)
		}
		return this
	},
hideMenu:function(){
	if(this.hasVisibleMenu()){
		this.menu.hide()
		}
		return this
	},
hasVisibleMenu:function(){
	return this.menu&&this.menu.ownerCt==this&&this.menu.isVisible()
	},
onRepeatClick:function(a,b){
	this.onClick(b)
	},
onClick:function(a){
	if(a){
		a.preventDefault()
		}
		if(a.button!==0){
		return
	}
	if(!this.disabled){
		this.doToggle();
		if(this.menu&&!this.hasVisibleMenu()&&!this.ignoreNextClick){
			this.showMenu()
			}
			this.fireEvent("click",this,a);
		if(this.handler){
			this.handler.call(this.scope||this,this,a)
			}
		}
},
doToggle:function(){
	if(this.enableToggle&&(this.allowDepress!==false||!this.pressed)){
		this.toggle()
		}
	},
isMenuTriggerOver:function(b,a){
	return this.menu&&!a
	},
isMenuTriggerOut:function(b,a){
	return this.menu&&!a
	},
onMouseOver:function(b){
	if(!this.disabled){
		var a=b.within(this.el,true);
		if(!a){
			this.el.addClass("x-btn-over");
			if(!this.monitoringMouseOver){
				this.doc.on("mouseover",this.monitorMouseOver,this);
				this.monitoringMouseOver=true
				}
				this.fireEvent("mouseover",this,b)
			}
			if(this.isMenuTriggerOver(b,a)){
			this.fireEvent("menutriggerover",this,this.menu,b)
			}
		}
},
monitorMouseOver:function(a){
	if(a.target!=this.el.dom&&!a.within(this.el)){
		if(this.monitoringMouseOver){
			this.doc.un("mouseover",this.monitorMouseOver,this);
			this.monitoringMouseOver=false
			}
			this.onMouseOut(a)
		}
	},
onMouseOut:function(b){
	var a=b.within(this.el)&&b.target!=this.el.dom;
	this.el.removeClass("x-btn-over");
	this.fireEvent("mouseout",this,b);
	if(this.isMenuTriggerOut(b,a)){
		this.fireEvent("menutriggerout",this,this.menu,b)
		}
	},
focus:function(){
	this.btnEl.focus()
	},
blur:function(){
	this.btnEl.blur()
	},
onFocus:function(a){
	if(!this.disabled){
		this.el.addClass("x-btn-focus")
		}
	},
onBlur:function(a){
	this.el.removeClass("x-btn-focus")
	},
getClickEl:function(b,a){
	return this.el
	},
onMouseDown:function(a){
	if(!this.disabled&&a.button===0){
		this.getClickEl(a).addClass("x-btn-click");
		this.doc.on("mouseup",this.onMouseUp,this)
		}
	},
onMouseUp:function(a){
	if(a.button===0){
		this.getClickEl(a,true).removeClass("x-btn-click");
		this.doc.un("mouseup",this.onMouseUp,this)
		}
	},
onMenuShow:function(a){
	if(this.menu.ownerCt==this){
		this.menu.ownerCt=this;
		this.ignoreNextClick=0;
		this.el.addClass("x-btn-menu-active");
		this.fireEvent("menushow",this,this.menu)
		}
	},
onMenuHide:function(a){
	if(this.menu.ownerCt==this){
		this.el.removeClass("x-btn-menu-active");
		this.ignoreNextClick=this.restoreClick.defer(250,this);
		this.fireEvent("menuhide",this,this.menu);
		delete this.menu.ownerCt
		}
	},
restoreClick:function(){
	this.ignoreNextClick=0
	}
});
Ext.reg("button",Ext.Button);
Ext.ButtonToggleMgr=function(){
	var a={};

	function b(e,k){
		if(k){
			var h=a[e.toggleGroup];
			for(var d=0,c=h.length;d<c;d++){
				if(h[d]!=e){
					h[d].toggle(false)
					}
				}
			}
	}
return{
	register:function(c){
		if(!c.toggleGroup){
			return
		}
		var d=a[c.toggleGroup];
		if(!d){
			d=a[c.toggleGroup]=[]
			}
			d.push(c);
		c.on("toggle",b)
		},
	unregister:function(c){
		if(!c.toggleGroup){
			return
		}
		var d=a[c.toggleGroup];
		if(d){
			d.remove(c);
			c.un("toggle",b)
			}
		},
getPressed:function(h){
	var e=a[h];
	if(e){
		for(var d=0,c=e.length;d<c;d++){
			if(e[d].pressed===true){
				return e[d]
				}
			}
		}
	return null
}
}
}();
Ext.SplitButton=Ext.extend(Ext.Button,{
	arrowSelector:"em",
	split:true,
	initComponent:function(){
		Ext.SplitButton.superclass.initComponent.call(this);
		this.addEvents("arrowclick")
		},
	onRender:function(){
		Ext.SplitButton.superclass.onRender.apply(this,arguments);
		if(this.arrowTooltip){
			this.el.child(this.arrowSelector).dom[this.tooltipType]=this.arrowTooltip
			}
		},
setArrowHandler:function(b,a){
	this.arrowHandler=b;
	this.scope=a
	},
getMenuClass:function(){
	return"x-btn-split"+(this.arrowAlign=="bottom"?"-bottom":"")
	},
isClickOnArrow:function(c){
	if(this.arrowAlign!="bottom"){
		var b=this.el.child("em.x-btn-split");
		var a=b.getRegion().right-b.getPadding("r");
		return c.getPageX()>a
		}else{
		return c.getPageY()>this.btnEl.getRegion().bottom
		}
	},
onClick:function(b,a){
	b.preventDefault();
	if(!this.disabled){
		if(this.isClickOnArrow(b)){
			if(this.menu&&!this.menu.isVisible()&&!this.ignoreNextClick){
				this.showMenu()
				}
				this.fireEvent("arrowclick",this,b);
			if(this.arrowHandler){
				this.arrowHandler.call(this.scope||this,this,b)
				}
			}else{
		this.doToggle();
		this.fireEvent("click",this,b);
		if(this.handler){
			this.handler.call(this.scope||this,this,b)
			}
		}
}
},
isMenuTriggerOver:function(a){
	return this.menu&&a.target.tagName==this.arrowSelector
	},
isMenuTriggerOut:function(b,a){
	return this.menu&&b.target.tagName!=this.arrowSelector
	}
});
Ext.reg("splitbutton",Ext.SplitButton);
Ext.CycleButton=Ext.extend(Ext.SplitButton,{
	getItemText:function(a){
		if(a&&this.showText===true){
			var b="";
			if(this.prependText){
				b+=this.prependText
				}
				b+=a.text;
			return b
			}
			return undefined
		},
	setActiveItem:function(c,a){
		if(!Ext.isObject(c)){
			c=this.menu.getComponent(c)
			}
			if(c){
			if(!this.rendered){
				this.text=this.getItemText(c);
				this.iconCls=c.iconCls
				}else{
				var b=this.getItemText(c);
				if(b){
					this.setText(b)
					}
					this.setIconClass(c.iconCls)
				}
				this.activeItem=c;
			if(!c.checked){
				c.setChecked(true,false)
				}
				if(this.forceIcon){
				this.setIconClass(this.forceIcon)
				}
				if(!a){
				this.fireEvent("change",this,c)
				}
			}
	},
getActiveItem:function(){
	return this.activeItem
	},
initComponent:function(){
	this.addEvents("change");
	if(this.changeHandler){
		this.on("change",this.changeHandler,this.scope||this);
		delete this.changeHandler
		}
		this.itemCount=this.items.length;
	this.menu={
		cls:"x-cycle-menu",
		items:[]
	};

	var a=0;
	Ext.each(this.items,function(c,b){
		Ext.apply(c,{
			group:c.group||this.id,
			itemIndex:b,
			checkHandler:this.checkHandler,
			scope:this,
			checked:c.checked||false
			});
		this.menu.items.push(c);
		if(c.checked){
			a=b
			}
		},this);
Ext.CycleButton.superclass.initComponent.call(this);
	this.on("click",this.toggleSelected,this);
	this.setActiveItem(a,true)
	},
checkHandler:function(a,b){
	if(b){
		this.setActiveItem(a)
		}
	},
toggleSelected:function(){
	var a=this.menu;
	a.render();
	if(!a.hasLayout){
		a.doLayout()
		}
		var d,b;
	for(var c=1;c<this.itemCount;c++){
		d=(this.activeItem.itemIndex+c)%this.itemCount;
		b=a.items.itemAt(d);
		if(!b.disabled){
			b.setChecked(true);
			break
		}
	}
	}
});
Ext.reg("cycle",Ext.CycleButton);
Ext.Toolbar=function(a){
	if(Ext.isArray(a)){
		a={
			items:a,
			layout:"toolbar"
		}
	}else{
	a=Ext.apply({
		layout:"toolbar"
	},a);
	if(a.buttons){
		a.items=a.buttons
		}
	}
Ext.Toolbar.superclass.constructor.call(this,a)
};
(function(){
	var a=Ext.Toolbar;
	Ext.extend(a,Ext.Container,{
		defaultType:"button",
		enableOverflow:false,
		trackMenus:true,
		internalDefaults:{
			removeMode:"container",
			hideParent:true
		},
		toolbarCls:"x-toolbar",
		initComponent:function(){
			a.superclass.initComponent.call(this);
			this.addEvents("overflowchange")
			},
		onRender:function(c,b){
			if(!this.el){
				if(!this.autoCreate){
					this.autoCreate={
						cls:this.toolbarCls+" x-small-editor"
						}
					}
				this.el=c.createChild(Ext.apply({
				id:this.id
				},this.autoCreate),b);
			Ext.Toolbar.superclass.onRender.apply(this,arguments)
			}
		},
	lookupComponent:function(b){
		if(Ext.isString(b)){
			if(b=="-"){
				b=new a.Separator()
				}else{
				if(b==" "){
					b=new a.Spacer()
					}else{
					if(b=="->"){
						b=new a.Fill()
						}else{
						b=new a.TextItem(b)
						}
					}
			}
		this.applyDefaults(b)
	}else{
	if(b.isFormField||b.render){
		b=this.createComponent(b)
		}else{
		if(b.tag){
			b=new a.Item({
				autoEl:b
			})
			}else{
			if(b.tagName){
				b=new a.Item({
					el:b
				})
				}else{
				if(Ext.isObject(b)){
					b=b.xtype?this.createComponent(b):this.constructButton(b)
					}
				}
		}
}
}
return b
},
applyDefaults:function(e){
	if(!Ext.isString(e)){
		e=Ext.Toolbar.superclass.applyDefaults.call(this,e);
		var b=this.internalDefaults;
		if(e.events){
			Ext.applyIf(e.initialConfig,b);
			Ext.apply(e,b)
			}else{
			Ext.applyIf(e,b)
			}
		}
	return e
},
addSeparator:function(){
	return this.add(new a.Separator())
	},
addSpacer:function(){
	return this.add(new a.Spacer())
	},
addFill:function(){
	this.add(new a.Fill())
	},
addElement:function(b){
	return this.addItem(new a.Item({
		el:b
	}))
	},
addItem:function(b){
	return this.add.apply(this,arguments)
	},
addButton:function(c){
	if(Ext.isArray(c)){
		var e=[];
		for(var d=0,b=c.length;d<b;d++){
			e.push(this.addButton(c[d]))
			}
			return e
		}
		return this.add(this.constructButton(c))
	},
addText:function(b){
	return this.addItem(new a.TextItem(b))
	},
addDom:function(b){
	return this.add(new a.Item({
		autoEl:b
	}))
	},
addField:function(b){
	return this.add(b)
	},
insertButton:function(c,g){
	if(Ext.isArray(g)){
		var e=[];
		for(var d=0,b=g.length;d<b;d++){
			e.push(this.insertButton(c+d,g[d]))
			}
			return e
		}
		return Ext.Toolbar.superclass.insert.call(this,c,g)
	},
trackMenu:function(c,b){
	if(this.trackMenus&&c.menu){
		var d=b?"mun":"mon";
		this[d](c,"menutriggerover",this.onButtonTriggerOver,this);
		this[d](c,"menushow",this.onButtonMenuShow,this);
		this[d](c,"menuhide",this.onButtonMenuHide,this)
		}
	},
constructButton:function(d){
	var c=d.events?d:this.createComponent(d,d.split?"splitbutton":this.defaultType);
	return c
	},
onAdd:function(b){
	Ext.Toolbar.superclass.onAdd.call(this);
	this.trackMenu(b);
	if(this.disabled){
		b.disable()
		}
	},
onRemove:function(b){
	Ext.Toolbar.superclass.onRemove.call(this);
	if(b==this.activeMenuBtn){
		delete this.activeMenuBtn
		}
		this.trackMenu(b,true)
	},
onDisable:function(){
	this.items.each(function(b){
		if(b.disable){
			b.disable()
			}
		})
},
onEnable:function(){
	this.items.each(function(b){
		if(b.enable){
			b.enable()
			}
		})
},
onButtonTriggerOver:function(b){
	if(this.activeMenuBtn&&this.activeMenuBtn!=b){
		this.activeMenuBtn.hideMenu();
		b.showMenu();
		this.activeMenuBtn=b
		}
	},
onButtonMenuShow:function(b){
	this.activeMenuBtn=b
	},
onButtonMenuHide:function(b){
	delete this.activeMenuBtn
	}
});
Ext.reg("toolbar",Ext.Toolbar);
a.Item=Ext.extend(Ext.BoxComponent,{
	hideParent:true,
	enable:Ext.emptyFn,
	disable:Ext.emptyFn,
	focus:Ext.emptyFn
	});
Ext.reg("tbitem",a.Item);
a.Separator=Ext.extend(a.Item,{
	onRender:function(c,b){
		this.el=c.createChild({
			tag:"span",
			cls:"xtb-sep"
		},b)
		}
	});
Ext.reg("tbseparator",a.Separator);
a.Spacer=Ext.extend(a.Item,{
	onRender:function(c,b){
		this.el=c.createChild({
			tag:"div",
			cls:"xtb-spacer",
			style:this.width?"width:"+this.width+"px":""
			},b)
		}
	});
Ext.reg("tbspacer",a.Spacer);
a.Fill=Ext.extend(a.Item,{
	render:Ext.emptyFn,
	isFill:true
});
Ext.reg("tbfill",a.Fill);
a.TextItem=Ext.extend(a.Item,{
	constructor:function(b){
		a.TextItem.superclass.constructor.call(this,Ext.isString(b)?{
			text:b
		}:b)
		},
	onRender:function(c,b){
		this.autoEl={
			cls:"xtb-text",
			html:this.text||""
			};

		a.TextItem.superclass.onRender.call(this,c,b)
		},
	setText:function(b){
		if(this.rendered){
			this.el.update(b)
			}else{
			this.text=b
			}
		}
});
Ext.reg("tbtext",a.TextItem);
a.Button=Ext.extend(Ext.Button,{});
a.SplitButton=Ext.extend(Ext.SplitButton,{});
Ext.reg("tbbutton",a.Button);
Ext.reg("tbsplit",a.SplitButton)
})();
Ext.ButtonGroup=Ext.extend(Ext.Panel,{
	baseCls:"x-btn-group",
	layout:"table",
	defaultType:"button",
	frame:true,
	internalDefaults:{
		removeMode:"container",
		hideParent:true
	},
	initComponent:function(){
		this.layoutConfig=this.layoutConfig||{};

		Ext.applyIf(this.layoutConfig,{
			columns:this.columns
			});
		if(!this.title){
			this.addClass("x-btn-group-notitle")
			}
			this.on("afterlayout",this.onAfterLayout,this);
		Ext.ButtonGroup.superclass.initComponent.call(this)
		},
	applyDefaults:function(b){
		b=Ext.ButtonGroup.superclass.applyDefaults.call(this,b);
		var a=this.internalDefaults;
		if(b.events){
			Ext.applyIf(b.initialConfig,a);
			Ext.apply(b,a)
			}else{
			Ext.applyIf(b,a)
			}
			return b
		},
	onAfterLayout:function(){
		var a=this.body.getFrameWidth("lr")+this.body.dom.firstChild.offsetWidth;
		this.body.setWidth(a);
		this.el.setWidth(a+this.getFrameWidth())
		}
	});
Ext.reg("buttongroup",Ext.ButtonGroup);
(function(){
	var a=Ext.Toolbar;
	Ext.PagingToolbar=Ext.extend(Ext.Toolbar,{
		pageSize:20,
		displayMsg:"Displaying {0} - {1} of {2}",
		emptyMsg:"No data to display",
		beforePageText:"Page",
		afterPageText:"of {0}",
		firstText:"First Page",
		prevText:"Previous Page",
		nextText:"Next Page",
		lastText:"Last Page",
		refreshText:"Refresh",
		initComponent:function(){
			var c=[this.first=new a.Button({
				tooltip:this.firstText,
				overflowText:this.firstText,
				iconCls:"x-tbar-page-first",
				disabled:true,
				handler:this.moveFirst,
				scope:this
			}),this.prev=new a.Button({
				tooltip:this.prevText,
				overflowText:this.prevText,
				iconCls:"x-tbar-page-prev",
				disabled:true,
				handler:this.movePrevious,
				scope:this
			}),"-",this.beforePageText,this.inputItem=new Ext.form.NumberField({
				cls:"x-tbar-page-number",
				allowDecimals:false,
				allowNegative:false,
				enableKeyEvents:true,
				selectOnFocus:true,
				submitValue:false,
				listeners:{
					scope:this,
					keydown:this.onPagingKeyDown,
					blur:this.onPagingBlur
					}
				}),this.afterTextItem=new a.TextItem({
			text:String.format(this.afterPageText,1)
			}),"-",this.next=new a.Button({
			tooltip:this.nextText,
			overflowText:this.nextText,
			iconCls:"x-tbar-page-next",
			disabled:true,
			handler:this.moveNext,
			scope:this
		}),this.last=new a.Button({
			tooltip:this.lastText,
			overflowText:this.lastText,
			iconCls:"x-tbar-page-last",
			disabled:true,
			handler:this.moveLast,
			scope:this
		}),"-",this.refresh=new a.Button({
			tooltip:this.refreshText,
			overflowText:this.refreshText,
			iconCls:"x-tbar-loading",
			handler:this.doRefresh,
			scope:this
		})];
		var b=this.items||this.buttons||[];
		if(this.prependButtons){
			this.items=b.concat(c)
			}else{
			this.items=c.concat(b)
			}
			delete this.buttons;
		if(this.displayInfo){
			this.items.push("->");
			this.items.push(this.displayItem=new a.TextItem({}))
			}
			Ext.PagingToolbar.superclass.initComponent.call(this);
		this.addEvents("change","beforechange");
		this.on("afterlayout",this.onFirstLayout,this,{
			single:true
		});
		this.cursor=0;
		this.bindStore(this.store,true)
		},
	onFirstLayout:function(){
		if(this.dsLoaded){
			this.onLoad.apply(this,this.dsLoaded)
			}
		},
	updateInfo:function(){
		if(this.displayItem){
			var b=this.store.getCount();
			var c=b==0?this.emptyMsg:String.format(this.displayMsg,this.cursor+1,this.cursor+b,this.store.getTotalCount());
			this.displayItem.setText(c)
			}
		},
onLoad:function(b,e,k){
	if(!this.rendered){
		this.dsLoaded=[b,e,k];
		return
	}
	var g=this.getParams();
	this.cursor=(k.params&&k.params[g.start])?k.params[g.start]:0;
	var i=this.getPageData(),c=i.activePage,h=i.pages;
	this.afterTextItem.setText(String.format(this.afterPageText,i.pages));
	this.inputItem.setValue(c);
	this.first.setDisabled(c==1);
	this.prev.setDisabled(c==1);
	this.next.setDisabled(c==h);
	this.last.setDisabled(c==h);
	this.refresh.enable();
	this.updateInfo();
	this.fireEvent("change",this,i)
	},
getPageData:function(){
	var b=this.store.getTotalCount();
	return{
		total:b,
		activePage:Math.ceil((this.cursor+this.pageSize)/this.pageSize),
		pages:b<this.pageSize?1:Math.ceil(b/this.pageSize)
		}
	},
changePage:function(b){
	this.doLoad(((b-1)*this.pageSize).constrain(0,this.store.getTotalCount()))
	},
onLoadError:function(){
	if(!this.rendered){
		return
	}
	this.refresh.enable()
	},
readPage:function(e){
	var b=this.inputItem.getValue(),c;
	if(!b||isNaN(c=parseInt(b,10))){
		this.inputItem.setValue(e.activePage);
		return false
		}
		return c
	},
onPagingFocus:function(){
	this.inputItem.select()
	},
onPagingBlur:function(b){
	this.inputItem.setValue(this.getPageData().activePage)
	},
onPagingKeyDown:function(i,h){
	var c=h.getKey(),l=this.getPageData(),g;
	if(c==h.RETURN){
		h.stopEvent();
		g=this.readPage(l);
		if(g!==false){
			g=Math.min(Math.max(1,g),l.pages)-1;
			this.doLoad(g*this.pageSize)
			}
		}else{
	if(c==h.HOME||c==h.END){
		h.stopEvent();
		g=c==h.HOME?1:l.pages;
		i.setValue(g)
		}else{
		if(c==h.UP||c==h.PAGEUP||c==h.DOWN||c==h.PAGEDOWN){
			h.stopEvent();
			if((g=this.readPage(l))){
				var b=h.shiftKey?10:1;
				if(c==h.DOWN||c==h.PAGEDOWN){
					b*=-1
					}
					g+=b;
				if(g>=1&g<=l.pages){
					i.setValue(g)
					}
				}
		}
}
}
},
getParams:function(){
	return this.paramNames||this.store.paramNames
	},
beforeLoad:function(){
	if(this.rendered&&this.refresh){
		this.refresh.disable()
		}
	},
doLoad:function(d){
	var c={},b=this.getParams();
	c[b.start]=d;
	c[b.limit]=this.pageSize;
	if(this.fireEvent("beforechange",this,c)!==false){
		this.store.load({
			params:c
		})
		}
	},
moveFirst:function(){
	this.doLoad(0)
	},
movePrevious:function(){
	this.doLoad(Math.max(0,this.cursor-this.pageSize))
	},
moveNext:function(){
	this.doLoad(this.cursor+this.pageSize)
	},
moveLast:function(){
	var c=this.store.getTotalCount(),b=c%this.pageSize;
	this.doLoad(b?(c-b):c-this.pageSize)
	},
doRefresh:function(){
	this.doLoad(this.cursor)
	},
bindStore:function(c,d){
	var b;
	if(!d&&this.store){
		if(c!==this.store&&this.store.autoDestroy){
			this.store.destroy()
			}else{
			this.store.un("beforeload",this.beforeLoad,this);
			this.store.un("load",this.onLoad,this);
			this.store.un("exception",this.onLoadError,this)
			}
			if(!c){
			this.store=null
			}
		}
	if(c){
	c=Ext.StoreMgr.lookup(c);
	c.on({
		scope:this,
		beforeload:this.beforeLoad,
		load:this.onLoad,
		exception:this.onLoadError
		});
	b=true
	}
	this.store=c;
if(b){
	this.onLoad(c,null,{})
	}
},
unbind:function(b){
	this.bindStore(null)
	},
bind:function(b){
	this.bindStore(b)
	},
onDestroy:function(){
	this.bindStore(null);
	Ext.PagingToolbar.superclass.onDestroy.call(this)
	}
})
})();
Ext.reg("paging",Ext.PagingToolbar);
Ext.History=(function(){
	var e,c;
	var l=false;
	var d;
	function g(){
		var m=location.href,n=m.indexOf("#");
		return n>=0?m.substr(n+1):null
		}
		function a(){
		c.value=d
		}
		function h(m){
		d=m;
		Ext.History.fireEvent("change",m)
		}
		function i(n){
		var m=['<html><body><div id="state">',Ext.util.Format.htmlEncode(n),"</div></body></html>"].join("");
		try{
			var p=e.contentWindow.document;
			p.open();
			p.write(m);
			p.close();
			return true
			}catch(o){
			return false
			}
		}
	function b(){
	if(!e.contentWindow||!e.contentWindow.document){
		setTimeout(b,10);
		return
	}
	var p=e.contentWindow.document;
	var n=p.getElementById("state");
	var m=n?n.innerText:null;
	var o=g();
	setInterval(function(){
		p=e.contentWindow.document;
		n=p.getElementById("state");
		var r=n?n.innerText:null;
		var q=g();
		if(r!==m){
			m=r;
			h(m);
			top.location.hash=m;
			o=m;
			a()
			}else{
			if(q!==o){
				o=q;
				i(q)
				}
			}
	},50);
l=true;
Ext.History.fireEvent("ready",Ext.History)
	}
	function k(){
	d=c.value?c.value:g();
	if(Ext.isIE){
		b()
		}else{
		var m=g();
		setInterval(function(){
			var n=g();
			if(n!==m){
				m=n;
				h(m);
				a()
				}
			},50);
	l=true;
	Ext.History.fireEvent("ready",Ext.History)
	}
}
return{
	fieldId:"x-history-field",
	iframeId:"x-history-frame",
	events:{},
	init:function(n,m){
		if(l){
			Ext.callback(n,m,[this]);
			return
		}
		if(!Ext.isReady){
			Ext.onReady(function(){
				Ext.History.init(n,m)
				});
			return
		}
		c=Ext.getDom(Ext.History.fieldId);
		if(Ext.isIE){
			e=Ext.getDom(Ext.History.iframeId)
			}
			this.addEvents("ready","change");
		if(n){
			this.on("ready",n,m,{
				single:true
			})
			}
			k()
		},
	add:function(m,n){
		if(n!==false){
			if(this.getToken()==m){
				return true
				}
			}
		if(Ext.isIE){
		return i(m)
		}else{
		top.location.hash=m;
		return true
		}
	},
back:function(){
	history.go(-1)
	},
forward:function(){
	history.go(1)
	},
getToken:function(){
	return l?d:g()
	}
}
})();
Ext.apply(Ext.History,new Ext.util.Observable());
Ext.Tip=Ext.extend(Ext.Panel,{
	minWidth:40,
	maxWidth:300,
	shadow:"sides",
	defaultAlign:"tl-bl?",
	autoRender:true,
	quickShowInterval:250,
	frame:true,
	hidden:true,
	baseCls:"x-tip",
	floating:{
		shadow:true,
		shim:true,
		useDisplay:true,
		constrain:false
	},
	autoHeight:true,
	closeAction:"hide",
	initComponent:function(){
		Ext.Tip.superclass.initComponent.call(this);
		if(this.closable&&!this.title){
			this.elements+=",header"
			}
		},
afterRender:function(){
	Ext.Tip.superclass.afterRender.call(this);
	if(this.closable){
		this.addTool({
			id:"close",
			handler:this[this.closeAction],
			scope:this
		})
		}
	},
showAt:function(a){
	Ext.Tip.superclass.show.call(this);
	if(this.measureWidth!==false&&(!this.initialConfig||typeof this.initialConfig.width!="number")){
		this.doAutoWidth()
		}
		if(this.constrainPosition){
		a=this.el.adjustForConstraints(a)
		}
		this.setPagePosition(a[0],a[1])
	},
doAutoWidth:function(a){
	a=a||0;
	var b=this.body.getTextWidth();
	if(this.title){
		b=Math.max(b,this.header.child("span").getTextWidth(this.title))
		}
		b+=this.getFrameWidth()+(this.closable?20:0)+this.body.getPadding("lr")+a;
	this.setWidth(b.constrain(this.minWidth,this.maxWidth));
	if(Ext.isIE7&&!this.repainted){
		this.el.repaint();
		this.repainted=true
		}
	},
showBy:function(a,b){
	if(!this.rendered){
		this.render(Ext.getBody())
		}
		this.showAt(this.el.getAlignToXY(a,b||this.defaultAlign))
	},
initDraggable:function(){
	this.dd=new Ext.Tip.DD(this,typeof this.draggable=="boolean"?null:this.draggable);
	this.header.addClass("x-tip-draggable")
	}
});
Ext.reg("tip",Ext.Tip);
Ext.Tip.DD=function(b,a){
	Ext.apply(this,a);
	this.tip=b;
	Ext.Tip.DD.superclass.constructor.call(this,b.el.id,"WindowDD-"+b.id);
	this.setHandleElId(b.header.id);
	this.scroll=false
	};

Ext.extend(Ext.Tip.DD,Ext.dd.DD,{
	moveOnly:true,
	scroll:false,
	headerOffsets:[100,25],
	startDrag:function(){
		this.tip.el.disableShadow()
		},
	endDrag:function(a){
		this.tip.el.enableShadow(true)
		}
	});
Ext.ToolTip=Ext.extend(Ext.Tip,{
	showDelay:500,
	hideDelay:200,
	dismissDelay:5000,
	trackMouse:false,
	anchorToTarget:true,
	anchorOffset:0,
	targetCounter:0,
	constrainPosition:false,
	initComponent:function(){
		Ext.ToolTip.superclass.initComponent.call(this);
		this.lastActive=new Date();
		this.initTarget(this.target);
		this.origAnchor=this.anchor
		},
	onRender:function(b,a){
		Ext.ToolTip.superclass.onRender.call(this,b,a);
		this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();
		this.anchorEl=this.el.createChild({
			cls:"x-tip-anchor "+this.anchorCls
			})
		},
	afterRender:function(){
		Ext.ToolTip.superclass.afterRender.call(this);
		this.anchorEl.setStyle("z-index",this.el.getZIndex()+1).setVisibilityMode(Ext.Element.DISPLAY)
		},
	initTarget:function(c){
		var a;
		if((a=Ext.get(c))){
			if(this.target){
				var b=Ext.get(this.target);
				this.mun(b,"mouseover",this.onTargetOver,this);
				this.mun(b,"mouseout",this.onTargetOut,this);
				this.mun(b,"mousemove",this.onMouseMove,this)
				}
				this.mon(a,{
				mouseover:this.onTargetOver,
				mouseout:this.onTargetOut,
				mousemove:this.onMouseMove,
				scope:this
			});
			this.target=a
			}
			if(this.anchor){
			this.anchorTarget=this.target
			}
		},
onMouseMove:function(b){
	var a=this.delegate?b.getTarget(this.delegate):this.triggerElement=true;
	if(a){
		this.targetXY=b.getXY();
		if(a===this.triggerElement){
			if(!this.hidden&&this.trackMouse){
				this.setPagePosition(this.getTargetXY())
				}
			}else{
		this.hide();
		this.lastActive=new Date(0);
		this.onTargetOver(b)
		}
	}else{
	if(!this.closable&&this.isVisible()){
		this.hide()
		}
	}
},
getTargetXY:function(){
	if(this.delegate){
		this.anchorTarget=this.triggerElement
		}
		if(this.anchor){
		this.targetCounter++;
		var c=this.getOffsets(),m=(this.anchorToTarget&&!this.trackMouse)?this.el.getAlignToXY(this.anchorTarget,this.getAnchorAlign()):this.targetXY,a=Ext.lib.Dom.getViewWidth()-5,h=Ext.lib.Dom.getViewHeight()-5,i=document.documentElement,e=document.body,l=(i.scrollLeft||e.scrollLeft||0)+5,k=(i.scrollTop||e.scrollTop||0)+5,b=[m[0]+c[0],m[1]+c[1]],g=this.getSize();
		this.anchorEl.removeClass(this.anchorCls);
		if(this.targetCounter<2){
			if(b[0]<l){
				if(this.anchorToTarget){
					this.defaultAlign="l-r";
					if(this.mouseOffset){
						this.mouseOffset[0]*=-1
						}
					}
				this.anchor="left";
			return this.getTargetXY()
			}
			if(b[0]+g.width>a){
			if(this.anchorToTarget){
				this.defaultAlign="r-l";
				if(this.mouseOffset){
					this.mouseOffset[0]*=-1
					}
				}
			this.anchor="right";
		return this.getTargetXY()
		}
		if(b[1]<k){
		if(this.anchorToTarget){
			this.defaultAlign="t-b";
			if(this.mouseOffset){
				this.mouseOffset[1]*=-1
				}
			}
		this.anchor="top";
	return this.getTargetXY()
	}
	if(b[1]+g.height>h){
	if(this.anchorToTarget){
		this.defaultAlign="b-t";
		if(this.mouseOffset){
			this.mouseOffset[1]*=-1
			}
		}
	this.anchor="bottom";
return this.getTargetXY()
}
}
this.anchorCls="x-tip-anchor-"+this.getAnchorPosition();
this.anchorEl.addClass(this.anchorCls);
this.targetCounter=0;
return b
}else{
	var d=this.getMouseOffset();
	return[this.targetXY[0]+d[0],this.targetXY[1]+d[1]]
	}
},
getMouseOffset:function(){
	var a=this.anchor?[0,0]:[15,18];
	if(this.mouseOffset){
		a[0]+=this.mouseOffset[0];
		a[1]+=this.mouseOffset[1]
		}
		return a
	},
getAnchorPosition:function(){
	if(this.anchor){
		this.tipAnchor=this.anchor.charAt(0)
		}else{
		var a=this.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);
		if(!a){
			throw"AnchorTip.defaultAlign is invalid"
			}
			this.tipAnchor=a[1].charAt(0)
		}
		switch(this.tipAnchor){
		case"t":
			return"top";
		case"b":
			return"bottom";
		case"r":
			return"right"
			}
			return"left"
	},
getAnchorAlign:function(){
	switch(this.anchor){
		case"top":
			return"tl-bl";
		case"left":
			return"tl-tr";
		case"right":
			return"tr-tl";
		default:
			return"bl-tl"
			}
		},
getOffsets:function(){
	var b,a=this.getAnchorPosition().charAt(0);
	if(this.anchorToTarget&&!this.trackMouse){
		switch(a){
			case"t":
				b=[0,9];
				break;
			case"b":
				b=[0,-13];
				break;
			case"r":
				b=[-13,0];
				break;
			default:
				b=[9,0];
				break
				}
			}else{
	switch(a){
		case"t":
			b=[-15-this.anchorOffset,30];
			break;
		case"b":
			b=[-19-this.anchorOffset,-13-this.el.dom.offsetHeight];
			break;
		case"r":
			b=[-15-this.el.dom.offsetWidth,-13-this.anchorOffset];
			break;
		default:
			b=[25,-13-this.anchorOffset];
			break
			}
		}
var c=this.getMouseOffset();
b[0]+=c[0];
b[1]+=c[1];
return b
},
onTargetOver:function(b){
	if(this.disabled||b.within(this.target.dom,true)){
		return
	}
	var a=b.getTarget(this.delegate);
	if(a){
		this.triggerElement=a;
		this.clearTimer("hide");
		this.targetXY=b.getXY();
		this.delayShow()
		}
	},
delayShow:function(){
	if(this.hidden&&!this.showTimer){
		if(this.lastActive.getElapsed()<this.quickShowInterval){
			this.show()
			}else{
			this.showTimer=this.show.defer(this.showDelay,this)
			}
		}else{
	if(!this.hidden&&this.autoHide!==false){
		this.show()
		}
	}
},
onTargetOut:function(a){
	if(this.disabled||a.within(this.target.dom,true)){
		return
	}
	this.clearTimer("show");
	if(this.autoHide!==false){
		this.delayHide()
		}
	},
delayHide:function(){
	if(!this.hidden&&!this.hideTimer){
		this.hideTimer=this.hide.defer(this.hideDelay,this)
		}
	},
hide:function(){
	this.clearTimer("dismiss");
	this.lastActive=new Date();
	if(this.anchorEl){
		this.anchorEl.hide()
		}
		Ext.ToolTip.superclass.hide.call(this);
	delete this.triggerElement
	},
show:function(){
	if(this.anchor){
		this.showAt([-1000,-1000]);
		this.origConstrainPosition=this.constrainPosition;
		this.constrainPosition=false;
		this.anchor=this.origAnchor
		}
		this.showAt(this.getTargetXY());
	if(this.anchor){
		this.anchorEl.show();
		this.syncAnchor();
		this.constrainPosition=this.origConstrainPosition
		}else{
		this.anchorEl.hide()
		}
	},
showAt:function(a){
	this.lastActive=new Date();
	this.clearTimers();
	Ext.ToolTip.superclass.showAt.call(this,a);
	if(this.dismissDelay&&this.autoHide!==false){
		this.dismissTimer=this.hide.defer(this.dismissDelay,this)
		}
		if(this.anchor&&!this.anchorEl.isVisible()){
		this.syncAnchor();
		this.anchorEl.show()
		}else{
		this.anchorEl.hide()
		}
	},
syncAnchor:function(){
	var a,b,c;
	switch(this.tipAnchor.charAt(0)){
		case"t":
			a="b";
			b="tl";
			c=[20+this.anchorOffset,2];
			break;
		case"r":
			a="l";
			b="tr";
			c=[-2,11+this.anchorOffset];
			break;
		case"b":
			a="t";
			b="bl";
			c=[20+this.anchorOffset,-2];
			break;
		default:
			a="r";
			b="tl";
			c=[2,11+this.anchorOffset];
			break
			}
			this.anchorEl.alignTo(this.el,a+"-"+b,c)
	},
setPagePosition:function(a,b){
	Ext.ToolTip.superclass.setPagePosition.call(this,a,b);
	if(this.anchor){
		this.syncAnchor()
		}
	},
clearTimer:function(a){
	a=a+"Timer";
	clearTimeout(this[a]);
	delete this[a]
},
clearTimers:function(){
	this.clearTimer("show");
	this.clearTimer("dismiss");
	this.clearTimer("hide")
	},
onShow:function(){
	Ext.ToolTip.superclass.onShow.call(this);
	Ext.getDoc().on("mousedown",this.onDocMouseDown,this)
	},
onHide:function(){
	Ext.ToolTip.superclass.onHide.call(this);
	Ext.getDoc().un("mousedown",this.onDocMouseDown,this)
	},
onDocMouseDown:function(a){
	if(this.autoHide!==true&&!this.closable&&!a.within(this.el.dom)){
		this.disable();
		this.doEnable.defer(100,this)
		}
	},
doEnable:function(){
	if(!this.isDestroyed){
		this.enable()
		}
	},
onDisable:function(){
	this.clearTimers();
	this.hide()
	},
adjustPosition:function(a,d){
	if(this.contstrainPosition){
		var c=this.targetXY[1],b=this.getSize().height;
		if(d<=c&&(d+b)>=c){
			d=c-b-5
			}
		}
	return{
	x:a,
	y:d
}
},
beforeDestroy:function(){
	this.clearTimers();
	Ext.destroy(this.anchorEl);
	delete this.anchorEl;
	delete this.target;
	delete this.anchorTarget;
	delete this.triggerElement;
	Ext.ToolTip.superclass.beforeDestroy.call(this)
	},
onDestroy:function(){
	Ext.getDoc().un("mousedown",this.onDocMouseDown,this);
	Ext.ToolTip.superclass.onDestroy.call(this)
	}
});
Ext.reg("tooltip",Ext.ToolTip);
Ext.QuickTip=Ext.extend(Ext.ToolTip,{
	interceptTitles:false,
	tagConfig:{
		namespace:"ext",
		attribute:"qtip",
		width:"qwidth",
		target:"target",
		title:"qtitle",
		hide:"hide",
		cls:"qclass",
		align:"qalign",
		anchor:"anchor"
	},
	initComponent:function(){
		this.target=this.target||Ext.getDoc();
		this.targets=this.targets||{};

		Ext.QuickTip.superclass.initComponent.call(this)
		},
	register:function(e){
		var h=Ext.isArray(e)?e:arguments;
		for(var g=0,a=h.length;g<a;g++){
			var l=h[g];
			var k=l.target;
			if(k){
				if(Ext.isArray(k)){
					for(var d=0,b=k.length;d<b;d++){
						this.targets[Ext.id(k[d])]=l
						}
					}else{
				this.targets[Ext.id(k)]=l
				}
			}
		}
},
unregister:function(a){
	delete this.targets[Ext.id(a)]
},
cancelShow:function(b){
	var a=this.activeTarget;
	b=Ext.get(b).dom;
	if(this.isVisible()){
		if(a&&a.el==b){
			this.hide()
			}
		}else{
	if(a&&a.el==b){
		this.clearTimer("show")
		}
	}
},
getTipCfg:function(d){
	var b=d.getTarget(),c,a;
	if(this.interceptTitles&&b.title&&Ext.isString(b.title)){
		c=b.title;
		b.qtip=c;
		b.removeAttribute("title");
		d.preventDefault()
		}else{
		a=this.tagConfig;
		c=b.qtip||Ext.fly(b).getAttribute(a.attribute,a.namespace)
		}
		return c
	},
onTargetOver:function(i){
	if(this.disabled){
		return
	}
	this.targetXY=i.getXY();
	var c=i.getTarget();
	if(!c||c.nodeType!==1||c==document||c==document.body){
		return
	}
	if(this.activeTarget&&((c==this.activeTarget.el)||Ext.fly(this.activeTarget.el).contains(c))){
		this.clearTimer("hide");
		this.show();
		return
	}
	if(c&&this.targets[c.id]){
		this.activeTarget=this.targets[c.id];
		this.activeTarget.el=c;
		this.anchor=this.activeTarget.anchor;
		if(this.anchor){
			this.anchorTarget=c
			}
			this.delayShow();
		return
	}
	var g,h=Ext.fly(c),b=this.tagConfig,d=b.namespace;
	if(g=this.getTipCfg(i)){
		var a=h.getAttribute(b.hide,d);
		this.activeTarget={
			el:c,
			text:g,
			width:h.getAttribute(b.width,d),
			autoHide:a!="user"&&a!=="false",
			title:h.getAttribute(b.title,d),
			cls:h.getAttribute(b.cls,d),
			align:h.getAttribute(b.align,d)
			};

		this.anchor=h.getAttribute(b.anchor,d);
		if(this.anchor){
			this.anchorTarget=c
			}
			this.delayShow()
		}
	},
onTargetOut:function(a){
	if(this.activeTarget&&a.within(this.activeTarget.el)&&!this.getTipCfg(a)){
		return
	}
	this.clearTimer("show");
	if(this.autoHide!==false){
		this.delayHide()
		}
	},
showAt:function(b){
	var a=this.activeTarget;
	if(a){
		if(!this.rendered){
			this.render(Ext.getBody());
			this.activeTarget=a
			}
			if(a.width){
			this.setWidth(a.width);
			this.body.setWidth(this.adjustBodyWidth(a.width-this.getFrameWidth()));
			this.measureWidth=false
			}else{
			this.measureWidth=true
			}
			this.setTitle(a.title||"");
		this.body.update(a.text);
		this.autoHide=a.autoHide;
		this.dismissDelay=a.dismissDelay||this.dismissDelay;
		if(this.lastCls){
			this.el.removeClass(this.lastCls);
			delete this.lastCls
			}
			if(a.cls){
			this.el.addClass(a.cls);
			this.lastCls=a.cls
			}
			if(this.anchor){
			this.constrainPosition=false
			}else{
			if(a.align){
				b=this.el.getAlignToXY(a.el,a.align);
				this.constrainPosition=false
				}else{
				this.constrainPosition=true
				}
			}
	}
Ext.QuickTip.superclass.showAt.call(this,b)
},
hide:function(){
	delete this.activeTarget;
	Ext.QuickTip.superclass.hide.call(this)
	}
});
Ext.reg("quicktip",Ext.QuickTip);
Ext.QuickTips=function(){
	var b,a=false;
	return{
		init:function(c){
			if(!b){
				if(!Ext.isReady){
					Ext.onReady(function(){
						Ext.QuickTips.init(c)
						});
					return
				}
				b=new Ext.QuickTip({
					elements:"header,body",
					disabled:a
				});
				if(c!==false){
					b.render(Ext.getBody())
					}
				}
		},
ddDisable:function(){
	if(b&&!a){
		b.disable()
		}
	},
ddEnable:function(){
	if(b&&!a){
		b.enable()
		}
	},
enable:function(){
	if(b){
		b.enable()
		}
		a=false
	},
disable:function(){
	if(b){
		b.disable()
		}
		a=true
	},
isEnabled:function(){
	return b!==undefined&&!b.disabled
	},
getQuickTip:function(){
	return b
	},
register:function(){
	b.register.apply(b,arguments)
	},
unregister:function(){
	b.unregister.apply(b,arguments)
	},
tips:function(){
	b.register.apply(b,arguments)
	}
}
}();
Ext.slider.Tip=Ext.extend(Ext.Tip,{
	minWidth:10,
	offsets:[0,-10],
	init:function(a){
		a.on({
			scope:this,
			dragstart:this.onSlide,
			drag:this.onSlide,
			dragend:this.hide,
			destroy:this.destroy
			})
		},
	onSlide:function(b,c,a){
		this.show();
		this.body.update(this.getText(a));
		this.doAutoWidth();
		this.el.alignTo(a.el,"b-t?",this.offsets)
		},
	getText:function(a){
		return String(a.value)
		}
	});
Ext.ux.SliderTip=Ext.slider.Tip;
Ext.tree.TreePanel=Ext.extend(Ext.Panel,{
	rootVisible:true,
	animate:Ext.enableFx,
	lines:true,
	enableDD:false,
	hlDrop:Ext.enableFx,
	pathSeparator:"/",
	bubbleEvents:[],
	initComponent:function(){
		Ext.tree.TreePanel.superclass.initComponent.call(this);
		if(!this.eventModel){
			this.eventModel=new Ext.tree.TreeEventModel(this)
			}
			var a=this.loader;
		if(!a){
			a=new Ext.tree.TreeLoader({
				dataUrl:this.dataUrl,
				requestMethod:this.requestMethod
				})
			}else{
			if(Ext.isObject(a)&&!a.load){
				a=new Ext.tree.TreeLoader(a)
				}
			}
		this.loader=a;
	this.nodeHash={};

	if(this.root){
		var b=this.root;
		delete this.root;
		this.setRootNode(b)
		}
		this.addEvents("append","remove","movenode","insert","beforeappend","beforeremove","beforemovenode","beforeinsert","beforeload","load","textchange","beforeexpandnode","beforecollapsenode","expandnode","disabledchange","collapsenode","beforeclick","click","containerclick","checkchange","beforedblclick","dblclick","containerdblclick","contextmenu","containercontextmenu","beforechildrenrendered","startdrag","enddrag","dragdrop","beforenodedrop","nodedrop","nodedragover");
	if(this.singleExpand){
		this.on("beforeexpandnode",this.restrictExpand,this)
		}
	},
proxyNodeEvent:function(c,b,a,h,g,e,d){
	if(c=="collapse"||c=="expand"||c=="beforecollapse"||c=="beforeexpand"||c=="move"||c=="beforemove"){
		c=c+"node"
		}
		return this.fireEvent(c,b,a,h,g,e,d)
	},
getRootNode:function(){
	return this.root
	},
setRootNode:function(b){
	this.destroyRoot();
	if(!b.render){
		b=this.loader.createNode(b)
		}
		this.root=b;
	b.ownerTree=this;
	b.isRoot=true;
	this.registerNode(b);
	if(!this.rootVisible){
		var a=b.attributes.uiProvider;
		b.ui=a?new a(b):new Ext.tree.RootTreeNodeUI(b)
		}
		if(this.innerCt){
		this.clearInnerCt();
		this.renderRoot()
		}
		return b
	},
clearInnerCt:function(){
	this.innerCt.update("")
	},
renderRoot:function(){
	this.root.render();
	if(!this.rootVisible){
		this.root.renderChildren()
		}
	},
getNodeById:function(a){
	return this.nodeHash[a]
	},
registerNode:function(a){
	this.nodeHash[a.id]=a
	},
unregisterNode:function(a){
	delete this.nodeHash[a.id]
},
toString:function(){
	return"[Tree"+(this.id?" "+this.id:"")+"]"
	},
restrictExpand:function(a){
	var b=a.parentNode;
	if(b){
		if(b.expandedChild&&b.expandedChild.parentNode==b){
			b.expandedChild.collapse()
			}
			b.expandedChild=a
		}
	},
getChecked:function(b,c){
	c=c||this.root;
	var d=[];
	var e=function(){
		if(this.attributes.checked){
			d.push(!b?this:(b=="id"?this.id:this.attributes[b]))
			}
		};

c.cascade(e);
return d
},
getLoader:function(){
	return this.loader
	},
expandAll:function(){
	this.root.expand(true)
	},
collapseAll:function(){
	this.root.collapse(true)
	},
getSelectionModel:function(){
	if(!this.selModel){
		this.selModel=new Ext.tree.DefaultSelectionModel()
		}
		return this.selModel
	},
expandPath:function(g,a,h){
	if(Ext.isEmpty(g)){
		if(h){
			h(false,undefined)
			}
			return
	}
	a=a||"id";
	var d=g.split(this.pathSeparator);
	var c=this.root;
	if(c.attributes[a]!=d[1]){
		if(h){
			h(false,null)
			}
			return
	}
	var b=1;
	var e=function(){
		if(++b==d.length){
			if(h){
				h(true,c)
				}
				return
		}
		var i=c.findChild(a,d[b]);
		if(!i){
			if(h){
				h(false,c)
				}
				return
		}
		c=i;
		i.expand(false,false,e)
		};

	c.expand(false,false,e)
	},
selectPath:function(e,a,g){
	if(Ext.isEmpty(e)){
		if(g){
			g(false,undefined)
			}
			return
	}
	a=a||"id";
	var c=e.split(this.pathSeparator),b=c.pop();
	if(c.length>1){
		var d=function(i,h){
			if(i&&h){
				var k=h.findChild(a,b);
				if(k){
					k.select();
					if(g){
						g(true,k)
						}
					}else{
				if(g){
					g(false,k)
					}
				}
		}else{
	if(g){
		g(false,k)
		}
	}
};

this.expandPath(c.join(this.pathSeparator),a,d)
}else{
	this.root.select();
	if(g){
		g(true,this.root)
		}
	}
},
getTreeEl:function(){
	return this.body
	},
onRender:function(b,a){
	Ext.tree.TreePanel.superclass.onRender.call(this,b,a);
	this.el.addClass("x-tree");
	this.innerCt=this.body.createChild({
		tag:"ul",
		cls:"x-tree-root-ct "+(this.useArrows?"x-tree-arrows":this.lines?"x-tree-lines":"x-tree-no-lines")
		})
	},
initEvents:function(){
	Ext.tree.TreePanel.superclass.initEvents.call(this);
	if(this.containerScroll){
		Ext.dd.ScrollManager.register(this.body)
		}
		if((this.enableDD||this.enableDrop)&&!this.dropZone){
		this.dropZone=new Ext.tree.TreeDropZone(this,this.dropConfig||{
			ddGroup:this.ddGroup||"TreeDD",
			appendOnly:this.ddAppendOnly===true
			})
		}
		if((this.enableDD||this.enableDrag)&&!this.dragZone){
		this.dragZone=new Ext.tree.TreeDragZone(this,this.dragConfig||{
			ddGroup:this.ddGroup||"TreeDD",
			scroll:this.ddScroll
			})
		}
		this.getSelectionModel().init(this)
	},
afterRender:function(){
	Ext.tree.TreePanel.superclass.afterRender.call(this);
	this.renderRoot()
	},
beforeDestroy:function(){
	if(this.rendered){
		Ext.dd.ScrollManager.unregister(this.body);
		Ext.destroy(this.dropZone,this.dragZone)
		}
		this.destroyRoot();
	Ext.destroy(this.loader);
	this.nodeHash=this.root=this.loader=null;
	Ext.tree.TreePanel.superclass.beforeDestroy.call(this)
	},
destroyRoot:function(){
	if(this.root&&this.root.destroy){
		this.root.destroy(true)
		}
	}
});
Ext.tree.TreePanel.nodeTypes={};

Ext.reg("treepanel",Ext.tree.TreePanel);
Ext.tree.TreeEventModel=function(a){
	this.tree=a;
	this.tree.on("render",this.initEvents,this)
	};

Ext.tree.TreeEventModel.prototype={
	initEvents:function(){
		var a=this.tree;
		if(a.trackMouseOver!==false){
			a.mon(a.innerCt,{
				scope:this,
				mouseover:this.delegateOver,
				mouseout:this.delegateOut
				})
			}
			a.mon(a.getTreeEl(),{
			scope:this,
			click:this.delegateClick,
			dblclick:this.delegateDblClick,
			contextmenu:this.delegateContextMenu
			})
		},
	getNode:function(b){
		var a;
		if(a=b.getTarget(".x-tree-node-el",10)){
			var c=Ext.fly(a,"_treeEvents").getAttribute("tree-node-id","ext");
			if(c){
				return this.tree.getNodeById(c)
				}
			}
		return null
	},
getNodeTarget:function(b){
	var a=b.getTarget(".x-tree-node-icon",1);
	if(!a){
		a=b.getTarget(".x-tree-node-el",6)
		}
		return a
	},
delegateOut:function(b,a){
	if(!this.beforeEvent(b)){
		return
	}
	if(b.getTarget(".x-tree-ec-icon",1)){
		var c=this.getNode(b);
		this.onIconOut(b,c);
		if(c==this.lastEcOver){
			delete this.lastEcOver
			}
		}
	if((a=this.getNodeTarget(b))&&!b.within(a,true)){
	this.onNodeOut(b,this.getNode(b))
	}
},
delegateOver:function(b,a){
	if(!this.beforeEvent(b)){
		return
	}
	if(Ext.isGecko&&!this.trackingDoc){
		Ext.getBody().on("mouseover",this.trackExit,this);
		this.trackingDoc=true
		}
		if(this.lastEcOver){
		this.onIconOut(b,this.lastEcOver);
		delete this.lastEcOver
		}
		if(b.getTarget(".x-tree-ec-icon",1)){
		this.lastEcOver=this.getNode(b);
		this.onIconOver(b,this.lastEcOver)
		}
		if(a=this.getNodeTarget(b)){
		this.onNodeOver(b,this.getNode(b))
		}
	},
trackExit:function(a){
	if(this.lastOverNode){
		if(this.lastOverNode.ui&&!a.within(this.lastOverNode.ui.getEl())){
			this.onNodeOut(a,this.lastOverNode)
			}
			delete this.lastOverNode;
		Ext.getBody().un("mouseover",this.trackExit,this);
		this.trackingDoc=false
		}
	},
delegateClick:function(b,a){
	if(this.beforeEvent(b)){
		if(b.getTarget("input[type=checkbox]",1)){
			this.onCheckboxClick(b,this.getNode(b))
			}else{
			if(b.getTarget(".x-tree-ec-icon",1)){
				this.onIconClick(b,this.getNode(b))
				}else{
				if(this.getNodeTarget(b)){
					this.onNodeClick(b,this.getNode(b))
					}
				}
		}
}else{
	this.checkContainerEvent(b,"click")
	}
},
delegateDblClick:function(b,a){
	if(this.beforeEvent(b)){
		if(this.getNodeTarget(b)){
			this.onNodeDblClick(b,this.getNode(b))
			}
		}else{
	this.checkContainerEvent(b,"dblclick")
	}
},
delegateContextMenu:function(b,a){
	if(this.beforeEvent(b)){
		if(this.getNodeTarget(b)){
			this.onNodeContextMenu(b,this.getNode(b))
			}
		}else{
	this.checkContainerEvent(b,"contextmenu")
	}
},
checkContainerEvent:function(b,a){
	if(this.disabled){
		b.stopEvent();
		return false
		}
		this.onContainerEvent(b,a)
	},
onContainerEvent:function(b,a){
	this.tree.fireEvent("container"+a,this.tree,b)
	},
onNodeClick:function(b,a){
	a.ui.onClick(b)
	},
onNodeOver:function(b,a){
	this.lastOverNode=a;
	a.ui.onOver(b)
	},
onNodeOut:function(b,a){
	a.ui.onOut(b)
	},
onIconOver:function(b,a){
	a.ui.addClass("x-tree-ec-over")
	},
onIconOut:function(b,a){
	a.ui.removeClass("x-tree-ec-over")
	},
onIconClick:function(b,a){
	a.ui.ecClick(b)
	},
onCheckboxClick:function(b,a){
	a.ui.onCheckChange(b)
	},
onNodeDblClick:function(b,a){
	a.ui.onDblClick(b)
	},
onNodeContextMenu:function(b,a){
	a.ui.onContextMenu(b)
	},
beforeEvent:function(b){
	var a=this.getNode(b);
	if(this.disabled||!a||!a.ui){
		b.stopEvent();
		return false
		}
		return true
	},
disable:function(){
	this.disabled=true
	},
enable:function(){
	this.disabled=false
	}
};

Ext.tree.DefaultSelectionModel=Ext.extend(Ext.util.Observable,{
	constructor:function(a){
		this.selNode=null;
		this.addEvents("selectionchange","beforeselect");
		Ext.apply(this,a);
		Ext.tree.DefaultSelectionModel.superclass.constructor.call(this)
		},
	init:function(a){
		this.tree=a;
		a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);
		a.on("click",this.onNodeClick,this)
		},
	onNodeClick:function(a,b){
		this.select(a)
		},
	select:function(c,a){
		if(!Ext.fly(c.ui.wrap).isVisible()&&a){
			return a.call(this,c)
			}
			var b=this.selNode;
		if(c==b){
			c.ui.onSelectedChange(true)
			}else{
			if(this.fireEvent("beforeselect",this,c,b)!==false){
				if(b&&b.ui){
					b.ui.onSelectedChange(false)
					}
					this.selNode=c;
				c.ui.onSelectedChange(true);
				this.fireEvent("selectionchange",this,c,b)
				}
			}
		return c
	},
unselect:function(b,a){
	if(this.selNode==b){
		this.clearSelections(a)
		}
	},
clearSelections:function(a){
	var b=this.selNode;
	if(b){
		b.ui.onSelectedChange(false);
		this.selNode=null;
		if(a!==true){
			this.fireEvent("selectionchange",this,null)
			}
		}
	return b
},
getSelectedNode:function(){
	return this.selNode
	},
isSelected:function(a){
	return this.selNode==a
	},
selectPrevious:function(a){
	if(!(a=a||this.selNode||this.lastSelNode)){
		return null
		}
		var c=a.previousSibling;
	if(c){
		if(!c.isExpanded()||c.childNodes.length<1){
			return this.select(c,this.selectPrevious)
			}else{
			var b=c.lastChild;
			while(b&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()&&b.childNodes.length>0){
				b=b.lastChild
				}
				return this.select(b,this.selectPrevious)
			}
		}else{
	if(a.parentNode&&(this.tree.rootVisible||!a.parentNode.isRoot)){
		return this.select(a.parentNode,this.selectPrevious)
		}
	}
return null
},
selectNext:function(b){
	if(!(b=b||this.selNode||this.lastSelNode)){
		return null
		}
		if(b.firstChild&&b.isExpanded()&&Ext.fly(b.ui.wrap).isVisible()){
		return this.select(b.firstChild,this.selectNext)
		}else{
		if(b.nextSibling){
			return this.select(b.nextSibling,this.selectNext)
			}else{
			if(b.parentNode){
				var a=null;
				b.parentNode.bubble(function(){
					if(this.nextSibling){
						a=this.getOwnerTree().selModel.select(this.nextSibling,this.selectNext);
						return false
						}
					});
			return a
			}
		}
}
return null
},
onKeyDown:function(c){
	var b=this.selNode||this.lastSelNode;
	var d=this;
	if(!b){
		return
	}
	var a=c.getKey();
	switch(a){
		case c.DOWN:
			c.stopEvent();
			this.selectNext();
			break;
		case c.UP:
			c.stopEvent();
			this.selectPrevious();
			break;
		case c.RIGHT:
			c.preventDefault();
			if(b.hasChildNodes()){
			if(!b.isExpanded()){
				b.expand()
				}else{
				if(b.firstChild){
					this.select(b.firstChild,c)
					}
				}
		}
		break;
case c.LEFT:
	c.preventDefault();
	if(b.hasChildNodes()&&b.isExpanded()){
	b.collapse()
	}else{
	if(b.parentNode&&(this.tree.rootVisible||b.parentNode!=this.tree.getRootNode())){
		this.select(b.parentNode,c)
		}
	}
break
}
}
});
Ext.tree.MultiSelectionModel=Ext.extend(Ext.util.Observable,{
	constructor:function(a){
		this.selNodes=[];
		this.selMap={};

		this.addEvents("selectionchange");
		Ext.apply(this,a);
		Ext.tree.MultiSelectionModel.superclass.constructor.call(this)
		},
	init:function(a){
		this.tree=a;
		a.mon(a.getTreeEl(),"keydown",this.onKeyDown,this);
		a.on("click",this.onNodeClick,this)
		},
	onNodeClick:function(a,b){
		if(b.ctrlKey&&this.isSelected(a)){
			this.unselect(a)
			}else{
			this.select(a,b,b.ctrlKey)
			}
		},
select:function(a,c,b){
	if(b!==true){
		this.clearSelections(true)
		}
		if(this.isSelected(a)){
		this.lastSelNode=a;
		return a
		}
		this.selNodes.push(a);
	this.selMap[a.id]=a;
	this.lastSelNode=a;
	a.ui.onSelectedChange(true);
	this.fireEvent("selectionchange",this,this.selNodes);
	return a
	},
unselect:function(b){
	if(this.selMap[b.id]){
		b.ui.onSelectedChange(false);
		var c=this.selNodes;
		var a=c.indexOf(b);
		if(a!=-1){
			this.selNodes.splice(a,1)
			}
			delete this.selMap[b.id];
		this.fireEvent("selectionchange",this,this.selNodes)
		}
	},
clearSelections:function(b){
	var d=this.selNodes;
	if(d.length>0){
		for(var c=0,a=d.length;c<a;c++){
			d[c].ui.onSelectedChange(false)
			}
			this.selNodes=[];
		this.selMap={};

		if(b!==true){
			this.fireEvent("selectionchange",this,this.selNodes)
			}
		}
},
isSelected:function(a){
	return this.selMap[a.id]?true:false
	},
getSelectedNodes:function(){
	return this.selNodes.concat([])
	},
onKeyDown:Ext.tree.DefaultSelectionModel.prototype.onKeyDown,
selectNext:Ext.tree.DefaultSelectionModel.prototype.selectNext,
selectPrevious:Ext.tree.DefaultSelectionModel.prototype.selectPrevious
});
Ext.data.Tree=Ext.extend(Ext.util.Observable,{
	constructor:function(a){
		this.nodeHash={};

		this.root=null;
		if(a){
			this.setRootNode(a)
			}
			this.addEvents("append","remove","move","insert","beforeappend","beforeremove","beforemove","beforeinsert");
		Ext.data.Tree.superclass.constructor.call(this)
		},
	pathSeparator:"/",
	proxyNodeEvent:function(){
		return this.fireEvent.apply(this,arguments)
		},
	getRootNode:function(){
		return this.root
		},
	setRootNode:function(a){
		this.root=a;
		a.ownerTree=this;
		a.isRoot=true;
		this.registerNode(a);
		return a
		},
	getNodeById:function(a){
		return this.nodeHash[a]
		},
	registerNode:function(a){
		this.nodeHash[a.id]=a
		},
	unregisterNode:function(a){
		delete this.nodeHash[a.id]
	},
	toString:function(){
		return"[Tree"+(this.id?" "+this.id:"")+"]"
		}
	});
Ext.data.Node=Ext.extend(Ext.util.Observable,{
	constructor:function(a){
		this.attributes=a||{};

		this.leaf=this.attributes.leaf;
		this.id=this.attributes.id;
		if(!this.id){
			this.id=Ext.id(null,"xnode-");
			this.attributes.id=this.id
			}
			this.childNodes=[];
		this.parentNode=null;
		this.firstChild=null;
		this.lastChild=null;
		this.previousSibling=null;
		this.nextSibling=null;
		this.addEvents({
			append:true,
			remove:true,
			move:true,
			insert:true,
			beforeappend:true,
			beforeremove:true,
			beforemove:true,
			beforeinsert:true
		});
		this.listeners=this.attributes.listeners;
		Ext.data.Node.superclass.constructor.call(this)
		},
	fireEvent:function(b){
		if(Ext.data.Node.superclass.fireEvent.apply(this,arguments)===false){
			return false
			}
			var a=this.getOwnerTree();
		if(a){
			if(a.proxyNodeEvent.apply(a,arguments)===false){
				return false
				}
			}
		return true
	},
isLeaf:function(){
	return this.leaf===true
	},
setFirstChild:function(a){
	this.firstChild=a
	},
setLastChild:function(a){
	this.lastChild=a
	},
isLast:function(){
	return(!this.parentNode?true:this.parentNode.lastChild==this)
	},
isFirst:function(){
	return(!this.parentNode?true:this.parentNode.firstChild==this)
	},
hasChildNodes:function(){
	return !this.isLeaf()&&this.childNodes.length>0
	},
isExpandable:function(){
	return this.attributes.expandable||this.hasChildNodes()
	},
appendChild:function(e){
	var g=false;
	if(Ext.isArray(e)){
		g=e
		}else{
		if(arguments.length>1){
			g=arguments
			}
		}
	if(g){
	for(var d=0,a=g.length;d<a;d++){
		this.appendChild(g[d])
		}
	}else{
	if(this.fireEvent("beforeappend",this.ownerTree,this,e)===false){
		return false
		}
		var b=this.childNodes.length;
	var c=e.parentNode;
	if(c){
		if(e.fireEvent("beforemove",e.getOwnerTree(),e,c,this,b)===false){
			return false
			}
			c.removeChild(e)
		}
		b=this.childNodes.length;
	if(b===0){
		this.setFirstChild(e)
		}
		this.childNodes.push(e);
	e.parentNode=this;
	var h=this.childNodes[b-1];
	if(h){
		e.previousSibling=h;
		h.nextSibling=e
		}else{
		e.previousSibling=null
		}
		e.nextSibling=null;
	this.setLastChild(e);
	e.setOwnerTree(this.getOwnerTree());
	this.fireEvent("append",this.ownerTree,this,e,b);
	if(c){
		e.fireEvent("move",this.ownerTree,e,c,this,b)
		}
		return e
	}
},
removeChild:function(c,b){
	var a=this.childNodes.indexOf(c);
	if(a==-1){
		return false
		}
		if(this.fireEvent("beforeremove",this.ownerTree,this,c)===false){
		return false
		}
		this.childNodes.splice(a,1);
	if(c.previousSibling){
		c.previousSibling.nextSibling=c.nextSibling
		}
		if(c.nextSibling){
		c.nextSibling.previousSibling=c.previousSibling
		}
		if(this.firstChild==c){
		this.setFirstChild(c.nextSibling)
		}
		if(this.lastChild==c){
		this.setLastChild(c.previousSibling)
		}
		this.fireEvent("remove",this.ownerTree,this,c);
	if(b){
		c.destroy(true)
		}else{
		c.clear()
		}
		return c
	},
clear:function(a){
	this.setOwnerTree(null,a);
	this.parentNode=this.previousSibling=this.nextSibling=null;
	if(a){
		this.firstChild=this.lastChild=null
		}
	},
destroy:function(a){
	if(a===true){
		this.purgeListeners();
		this.clear(true);
		Ext.each(this.childNodes,function(b){
			b.destroy(true)
			});
		this.childNodes=null
		}else{
		this.remove(true)
		}
	},
insertBefore:function(d,a){
	if(!a){
		return this.appendChild(d)
		}
		if(d==a){
		return false
		}
		if(this.fireEvent("beforeinsert",this.ownerTree,this,d,a)===false){
		return false
		}
		var b=this.childNodes.indexOf(a);
	var c=d.parentNode;
	var e=b;
	if(c==this&&this.childNodes.indexOf(d)<b){
		e--
	}
	if(c){
		if(d.fireEvent("beforemove",d.getOwnerTree(),d,c,this,b,a)===false){
			return false
			}
			c.removeChild(d)
		}
		if(e===0){
		this.setFirstChild(d)
		}
		this.childNodes.splice(e,0,d);
	d.parentNode=this;
	var g=this.childNodes[e-1];
	if(g){
		d.previousSibling=g;
		g.nextSibling=d
		}else{
		d.previousSibling=null
		}
		d.nextSibling=a;
	a.previousSibling=d;
	d.setOwnerTree(this.getOwnerTree());
	this.fireEvent("insert",this.ownerTree,this,d,a);
	if(c){
		d.fireEvent("move",this.ownerTree,d,c,this,e,a)
		}
		return d
	},
remove:function(a){
	if(this.parentNode){
		this.parentNode.removeChild(this,a)
		}
		return this
	},
removeAll:function(a){
	var c=this.childNodes,b;
	while((b=c[0])){
		this.removeChild(b,a)
		}
		return this
	},
item:function(a){
	return this.childNodes[a]
	},
replaceChild:function(a,c){
	var b=c?c.nextSibling:null;
	this.removeChild(c);
	this.insertBefore(a,b);
	return c
	},
indexOf:function(a){
	return this.childNodes.indexOf(a)
	},
getOwnerTree:function(){
	if(!this.ownerTree){
		var a=this;
		while(a){
			if(a.ownerTree){
				this.ownerTree=a.ownerTree;
				break
			}
			a=a.parentNode
			}
		}
	return this.ownerTree
},
getDepth:function(){
	var b=0;
	var a=this;
	while(a.parentNode){
		++b;
		a=a.parentNode
		}
		return b
	},
setOwnerTree:function(a,b){
	if(a!=this.ownerTree){
		if(this.ownerTree){
			this.ownerTree.unregisterNode(this)
			}
			this.ownerTree=a;
		if(b!==true){
			Ext.each(this.childNodes,function(c){
				c.setOwnerTree(a)
				})
			}
			if(a){
			a.registerNode(this)
			}
		}
},
setId:function(b){
	if(b!==this.id){
		var a=this.ownerTree;
		if(a){
			a.unregisterNode(this)
			}
			this.id=this.attributes.id=b;
		if(a){
			a.registerNode(this)
			}
			this.onIdChange(b)
		}
	},
onIdChange:Ext.emptyFn,
getPath:function(c){
	c=c||"id";
	var e=this.parentNode;
	var a=[this.attributes[c]];
	while(e){
		a.unshift(e.attributes[c]);
		e=e.parentNode
		}
		var d=this.getOwnerTree().pathSeparator;
	return d+a.join(d)
	},
bubble:function(c,b,a){
	var d=this;
	while(d){
		if(c.apply(b||d,a||[d])===false){
			break
		}
		d=d.parentNode
		}
	},
cascade:function(g,e,b){
	if(g.apply(e||this,b||[this])!==false){
		var d=this.childNodes;
		for(var c=0,a=d.length;c<a;c++){
			d[c].cascade(g,e,b)
			}
		}
	},
eachChild:function(g,e,b){
	var d=this.childNodes;
	for(var c=0,a=d.length;c<a;c++){
		if(g.apply(e||d[c],b||[d[c]])===false){
			break
		}
	}
	},
findChild:function(b,c,a){
	return this.findChildBy(function(){
		return this.attributes[b]==c
		},null,a)
	},
findChildBy:function(h,g,b){
	var e=this.childNodes,a=e.length,d=0,k,c;
	for(;d<a;d++){
		k=e[d];
		if(h.call(g||k,k)===true){
			return k
			}else{
			if(b){
				c=k.findChildBy(h,g,b);
				if(c!=null){
					return c
					}
				}
		}
	}
return null
},
sort:function(e,d){
	var c=this.childNodes;
	var a=c.length;
	if(a>0){
		var g=d?function(){
			e.apply(d,arguments)
			}:e;
		c.sort(g);
		for(var b=0;b<a;b++){
			var h=c[b];
			h.previousSibling=c[b-1];
			h.nextSibling=c[b+1];
			if(b===0){
				this.setFirstChild(h)
				}
				if(b==a-1){
				this.setLastChild(h)
				}
			}
		}
},
contains:function(a){
	return a.isAncestor(this)
	},
isAncestor:function(a){
	var b=this.parentNode;
	while(b){
		if(b==a){
			return true
			}
			b=b.parentNode
		}
		return false
	},
toString:function(){
	return"[Node"+(this.id?" "+this.id:"")+"]"
	}
});
Ext.tree.TreeNode=Ext.extend(Ext.data.Node,{
	constructor:function(a){
		a=a||{};

		if(Ext.isString(a)){
			a={
				text:a
			}
		}
		this.childrenRendered=false;
	this.rendered=false;
	Ext.tree.TreeNode.superclass.constructor.call(this,a);
	this.expanded=a.expanded===true;
	this.isTarget=a.isTarget!==false;
	this.draggable=a.draggable!==false&&a.allowDrag!==false;
	this.allowChildren=a.allowChildren!==false&&a.allowDrop!==false;
	this.text=a.text;
	this.disabled=a.disabled===true;
	this.hidden=a.hidden===true;
	this.addEvents("textchange","beforeexpand","beforecollapse","expand","disabledchange","collapse","beforeclick","click","checkchange","beforedblclick","dblclick","contextmenu","beforechildrenrendered");
	var b=this.attributes.uiProvider||this.defaultUI||Ext.tree.TreeNodeUI;
	this.ui=new b(this)
	},
preventHScroll:true,
isExpanded:function(){
	return this.expanded
	},
getUI:function(){
	return this.ui
	},
getLoader:function(){
	var a;
	return this.loader||((a=this.getOwnerTree())&&a.loader?a.loader:(this.loader=new Ext.tree.TreeLoader()))
	},
setFirstChild:function(a){
	var b=this.firstChild;
	Ext.tree.TreeNode.superclass.setFirstChild.call(this,a);
	if(this.childrenRendered&&b&&a!=b){
		b.renderIndent(true,true)
		}
		if(this.rendered){
		this.renderIndent(true,true)
		}
	},
setLastChild:function(b){
	var a=this.lastChild;
	Ext.tree.TreeNode.superclass.setLastChild.call(this,b);
	if(this.childrenRendered&&a&&b!=a){
		a.renderIndent(true,true)
		}
		if(this.rendered){
		this.renderIndent(true,true)
		}
	},
appendChild:function(b){
	if(!b.render&&!Ext.isArray(b)){
		b=this.getLoader().createNode(b)
		}
		var a=Ext.tree.TreeNode.superclass.appendChild.call(this,b);
	if(a&&this.childrenRendered){
		a.render()
		}
		this.ui.updateExpandIcon();
	return a
	},
removeChild:function(b,a){
	this.ownerTree.getSelectionModel().unselect(b);
	Ext.tree.TreeNode.superclass.removeChild.apply(this,arguments);
	if(!a){
		var c=b.ui.rendered;
		if(c){
			b.ui.remove()
			}
			if(c&&this.childNodes.length<1){
			this.collapse(false,false)
			}else{
			this.ui.updateExpandIcon()
			}
			if(!this.firstChild&&!this.isHiddenRoot()){
			this.childrenRendered=false
			}
		}
	return b
},
insertBefore:function(c,a){
	if(!c.render){
		c=this.getLoader().createNode(c)
		}
		var b=Ext.tree.TreeNode.superclass.insertBefore.call(this,c,a);
	if(b&&a&&this.childrenRendered){
		c.render()
		}
		this.ui.updateExpandIcon();
	return b
	},
setText:function(b){
	var a=this.text;
	this.text=this.attributes.text=b;
	if(this.rendered){
		this.ui.onTextChange(this,b,a)
		}
		this.fireEvent("textchange",this,b,a)
	},
setIconCls:function(b){
	var a=this.attributes.iconCls;
	this.attributes.iconCls=b;
	if(this.rendered){
		this.ui.onIconClsChange(this,b,a)
		}
	},
setTooltip:function(a,b){
	this.attributes.qtip=a;
	this.attributes.qtipTitle=b;
	if(this.rendered){
		this.ui.onTipChange(this,a,b)
		}
	},
setIcon:function(a){
	this.attributes.icon=a;
	if(this.rendered){
		this.ui.onIconChange(this,a)
		}
	},
setHref:function(a,b){
	this.attributes.href=a;
	this.attributes.hrefTarget=b;
	if(this.rendered){
		this.ui.onHrefChange(this,a,b)
		}
	},
setCls:function(b){
	var a=this.attributes.cls;
	this.attributes.cls=b;
	if(this.rendered){
		this.ui.onClsChange(this,b,a)
		}
	},
select:function(){
	var a=this.getOwnerTree();
	if(a){
		a.getSelectionModel().select(this)
		}
	},
unselect:function(a){
	var b=this.getOwnerTree();
	if(b){
		b.getSelectionModel().unselect(this,a)
		}
	},
isSelected:function(){
	var a=this.getOwnerTree();
	return a?a.getSelectionModel().isSelected(this):false
	},
expand:function(a,c,d,b){
	if(!this.expanded){
		if(this.fireEvent("beforeexpand",this,a,c)===false){
			return
		}
		if(!this.childrenRendered){
			this.renderChildren()
			}
			this.expanded=true;
		if(!this.isHiddenRoot()&&(this.getOwnerTree().animate&&c!==false)||c){
			this.ui.animExpand(function(){
				this.fireEvent("expand",this);
				this.runCallback(d,b||this,[this]);
				if(a===true){
					this.expandChildNodes(true,true)
					}
				}.createDelegate(this));
		return
	}else{
		this.ui.expand();
		this.fireEvent("expand",this);
		this.runCallback(d,b||this,[this])
		}
	}else{
	this.runCallback(d,b||this,[this])
	}
	if(a===true){
	this.expandChildNodes(true)
	}
},
runCallback:function(a,c,b){
	if(Ext.isFunction(a)){
		a.apply(c,b)
		}
	},
isHiddenRoot:function(){
	return this.isRoot&&!this.getOwnerTree().rootVisible
	},
collapse:function(b,g,h,e){
	if(this.expanded&&!this.isHiddenRoot()){
		if(this.fireEvent("beforecollapse",this,b,g)===false){
			return
		}
		this.expanded=false;
		if((this.getOwnerTree().animate&&g!==false)||g){
			this.ui.animCollapse(function(){
				this.fireEvent("collapse",this);
				this.runCallback(h,e||this,[this]);
				if(b===true){
					this.collapseChildNodes(true)
					}
				}.createDelegate(this));
		return
	}else{
		this.ui.collapse();
		this.fireEvent("collapse",this);
		this.runCallback(h,e||this,[this])
		}
	}else{
	if(!this.expanded){
		this.runCallback(h,e||this,[this])
		}
	}
if(b===true){
	var d=this.childNodes;
	for(var c=0,a=d.length;c<a;c++){
		d[c].collapse(true,false)
		}
	}
},
delayedExpand:function(a){
	if(!this.expandProcId){
		this.expandProcId=this.expand.defer(a,this)
		}
	},
cancelExpand:function(){
	if(this.expandProcId){
		clearTimeout(this.expandProcId)
		}
		this.expandProcId=false
	},
toggle:function(){
	if(this.expanded){
		this.collapse()
		}else{
		this.expand()
		}
	},
ensureVisible:function(c,b){
	var a=this.getOwnerTree();
	a.expandPath(this.parentNode?this.parentNode.getPath():this.getPath(),false,function(){
		var d=a.getNodeById(this.id);
		a.getTreeEl().scrollChildIntoView(d.ui.anchor);
		this.runCallback(c,b||this,[this])
		}.createDelegate(this))
	},
expandChildNodes:function(b,e){
	var d=this.childNodes,c,a=d.length;
	for(c=0;c<a;c++){
		d[c].expand(b,e)
		}
	},
collapseChildNodes:function(b){
	var d=this.childNodes;
	for(var c=0,a=d.length;c<a;c++){
		d[c].collapse(b)
		}
	},
disable:function(){
	this.disabled=true;
	this.unselect();
	if(this.rendered&&this.ui.onDisableChange){
		this.ui.onDisableChange(this,true)
		}
		this.fireEvent("disabledchange",this,true)
	},
enable:function(){
	this.disabled=false;
	if(this.rendered&&this.ui.onDisableChange){
		this.ui.onDisableChange(this,false)
		}
		this.fireEvent("disabledchange",this,false)
	},
renderChildren:function(b){
	if(b!==false){
		this.fireEvent("beforechildrenrendered",this)
		}
		var d=this.childNodes;
	for(var c=0,a=d.length;c<a;c++){
		d[c].render(true)
		}
		this.childrenRendered=true
	},
sort:function(e,d){
	Ext.tree.TreeNode.superclass.sort.apply(this,arguments);
	if(this.childrenRendered){
		var c=this.childNodes;
		for(var b=0,a=c.length;b<a;b++){
			c[b].render(true)
			}
		}
	},
render:function(a){
	this.ui.render(a);
	if(!this.rendered){
		this.getOwnerTree().registerNode(this);
		this.rendered=true;
		if(this.expanded){
			this.expanded=false;
			this.expand(false,false)
			}
		}
},
renderIndent:function(b,e){
	if(e){
		this.ui.childIndent=null
		}
		this.ui.renderIndent();
	if(b===true&&this.childrenRendered){
		var d=this.childNodes;
		for(var c=0,a=d.length;c<a;c++){
			d[c].renderIndent(true,e)
			}
		}
	},
beginUpdate:function(){
	this.childrenRendered=false
	},
endUpdate:function(){
	if(this.expanded&&this.rendered){
		this.renderChildren()
		}
	},
destroy:function(a){
	if(a===true){
		this.unselect(true)
		}
		Ext.tree.TreeNode.superclass.destroy.call(this,a);
	Ext.destroy(this.ui,this.loader);
	this.ui=this.loader=null
	},
onIdChange:function(a){
	this.ui.onIdChange(a)
	}
});
Ext.tree.TreePanel.nodeTypes.node=Ext.tree.TreeNode;
Ext.tree.AsyncTreeNode=function(a){
	this.loaded=a&&a.loaded===true;
	this.loading=false;
	Ext.tree.AsyncTreeNode.superclass.constructor.apply(this,arguments);
	this.addEvents("beforeload","load")
	};

Ext.extend(Ext.tree.AsyncTreeNode,Ext.tree.TreeNode,{
	expand:function(b,e,h,c){
		if(this.loading){
			var g;
			var d=function(){
				if(!this.loading){
					clearInterval(g);
					this.expand(b,e,h,c)
					}
				}.createDelegate(this);
		g=setInterval(d,200);
		return
	}
	if(!this.loaded){
		if(this.fireEvent("beforeload",this)===false){
			return
		}
		this.loading=true;
		this.ui.beforeLoad(this);
		var a=this.loader||this.attributes.loader||this.getOwnerTree().getLoader();
		if(a){
			a.load(this,this.loadComplete.createDelegate(this,[b,e,h,c]),this);
			return
		}
	}
	Ext.tree.AsyncTreeNode.superclass.expand.call(this,b,e,h,c)
	},
isLoading:function(){
	return this.loading
	},
loadComplete:function(a,c,d,b){
	this.loading=false;
	this.loaded=true;
	this.ui.afterLoad(this);
	this.fireEvent("load",this);
	this.expand(a,c,d,b)
	},
isLoaded:function(){
	return this.loaded
	},
hasChildNodes:function(){
	if(!this.isLeaf()&&!this.loaded){
		return true
		}else{
		return Ext.tree.AsyncTreeNode.superclass.hasChildNodes.call(this)
		}
	},
reload:function(b,a){
	this.collapse(false,false);
	while(this.firstChild){
		this.removeChild(this.firstChild).destroy()
		}
		this.childrenRendered=false;
	this.loaded=false;
	if(this.isHiddenRoot()){
		this.expanded=false
		}
		this.expand(false,false,b,a)
	}
});
Ext.tree.TreePanel.nodeTypes.async=Ext.tree.AsyncTreeNode;
Ext.tree.TreeNodeUI=Ext.extend(Object,{
	constructor:function(a){
		Ext.apply(this,{
			node:a,
			rendered:false,
			animating:false,
			wasLeaf:true,
			ecc:"x-tree-ec-icon x-tree-elbow",
			emptyIcon:Ext.BLANK_IMAGE_URL
			})
		},
	removeChild:function(a){
		if(this.rendered){
			this.ctNode.removeChild(a.ui.getEl())
			}
		},
beforeLoad:function(){
	this.addClass("x-tree-node-loading")
	},
afterLoad:function(){
	this.removeClass("x-tree-node-loading")
	},
onTextChange:function(b,c,a){
	if(this.rendered){
		this.textNode.innerHTML=c
		}
	},
onIconClsChange:function(c,a,b){
	if(this.rendered){
		Ext.fly(this.iconNode).replaceClass(b,a)
		}
	},
onIconChange:function(b,a){
	if(this.rendered){
		var c=Ext.isEmpty(a);
		this.iconNode.src=c?this.emptyIcon:a;
		Ext.fly(this.iconNode)[c?"removeClass":"addClass"]("x-tree-node-inline-icon")
		}
	},
onTipChange:function(b,c,d){
	if(this.rendered){
		var a=Ext.isDefined(d);
		if(this.textNode.setAttributeNS){
			this.textNode.setAttributeNS("ext","qtip",c);
			if(a){
				this.textNode.setAttributeNS("ext","qtitle",d)
				}
			}else{
		this.textNode.setAttribute("ext:qtip",c);
		if(a){
			this.textNode.setAttribute("ext:qtitle",d)
			}
		}
}
},
onHrefChange:function(b,a,c){
	if(this.rendered){
		this.anchor.href=this.getHref(a);
		if(Ext.isDefined(c)){
			this.anchor.target=c
			}
		}
},
onClsChange:function(c,a,b){
	if(this.rendered){
		Ext.fly(this.elNode).replaceClass(b,a)
		}
	},
onDisableChange:function(a,b){
	this.disabled=b;
	if(this.checkbox){
		this.checkbox.disabled=b
		}
		this[b?"addClass":"removeClass"]("x-tree-node-disabled")
	},
onSelectedChange:function(a){
	if(a){
		this.focus();
		this.addClass("x-tree-selected")
		}else{
		this.removeClass("x-tree-selected")
		}
	},
onMove:function(a,h,e,g,d,b){
	this.childIndent=null;
	if(this.rendered){
		var i=g.ui.getContainer();
		if(!i){
			this.holder=document.createElement("div");
			this.holder.appendChild(this.wrap);
			return
		}
		var c=b?b.ui.getEl():null;
		if(c){
			i.insertBefore(this.wrap,c)
			}else{
			i.appendChild(this.wrap)
			}
			this.node.renderIndent(true,e!=g)
		}
	},
addClass:function(a){
	if(this.elNode){
		Ext.fly(this.elNode).addClass(a)
		}
	},
removeClass:function(a){
	if(this.elNode){
		Ext.fly(this.elNode).removeClass(a)
		}
	},
remove:function(){
	if(this.rendered){
		this.holder=document.createElement("div");
		this.holder.appendChild(this.wrap)
		}
	},
fireEvent:function(){
	return this.node.fireEvent.apply(this.node,arguments)
	},
initEvents:function(){
	this.node.on("move",this.onMove,this);
	if(this.node.disabled){
		this.onDisableChange(this.node,true)
		}
		if(this.node.hidden){
		this.hide()
		}
		var b=this.node.getOwnerTree();
	var a=b.enableDD||b.enableDrag||b.enableDrop;
	if(a&&(!this.node.isRoot||b.rootVisible)){
		Ext.dd.Registry.register(this.elNode,{
			node:this.node,
			handles:this.getDDHandles(),
			isHandle:false
		})
		}
	},
getDDHandles:function(){
	return[this.iconNode,this.textNode,this.elNode]
	},
hide:function(){
	this.node.hidden=true;
	if(this.wrap){
		this.wrap.style.display="none"
		}
	},
show:function(){
	this.node.hidden=false;
	if(this.wrap){
		this.wrap.style.display=""
		}
	},
onContextMenu:function(a){
	if(this.node.hasListener("contextmenu")||this.node.getOwnerTree().hasListener("contextmenu")){
		a.preventDefault();
		this.focus();
		this.fireEvent("contextmenu",this.node,a)
		}
	},
onClick:function(c){
	if(this.dropping){
		c.stopEvent();
		return
	}
	if(this.fireEvent("beforeclick",this.node,c)!==false){
		var b=c.getTarget("a");
		if(!this.disabled&&this.node.attributes.href&&b){
			this.fireEvent("click",this.node,c);
			return
		}else{
			if(b&&c.ctrlKey){
				c.stopEvent()
				}
			}
		c.preventDefault();
	if(this.disabled){
		return
	}
	if(this.node.attributes.singleClickExpand&&!this.animating&&this.node.isExpandable()){
		this.node.toggle()
		}
		this.fireEvent("click",this.node,c)
	}else{
	c.stopEvent()
	}
},
onDblClick:function(a){
	a.preventDefault();
	if(this.disabled){
		return
	}
	if(this.fireEvent("beforedblclick",this.node,a)!==false){
		if(this.checkbox){
			this.toggleCheck()
			}
			if(!this.animating&&this.node.isExpandable()){
			this.node.toggle()
			}
			this.fireEvent("dblclick",this.node,a)
		}
	},
onOver:function(a){
	this.addClass("x-tree-node-over")
	},
onOut:function(a){
	this.removeClass("x-tree-node-over")
	},
onCheckChange:function(){
	var a=this.checkbox.checked;
	this.checkbox.defaultChecked=a;
	this.node.attributes.checked=a;
	this.fireEvent("checkchange",this.node,a)
	},
ecClick:function(a){
	if(!this.animating&&this.node.isExpandable()){
		this.node.toggle()
		}
	},
startDrop:function(){
	this.dropping=true
	},
endDrop:function(){
	setTimeout(function(){
		this.dropping=false
		}.createDelegate(this),50)
	},
expand:function(){
	this.updateExpandIcon();
	this.ctNode.style.display=""
	},
focus:function(){
	if(!this.node.preventHScroll){
		try{
			this.anchor.focus()
			}catch(c){}
	}else{
	try{
		var b=this.node.getOwnerTree().getTreeEl().dom;
		var a=b.scrollLeft;
		this.anchor.focus();
		b.scrollLeft=a
		}catch(c){}
}
},
toggleCheck:function(b){
	var a=this.checkbox;
	if(a){
		a.checked=(b===undefined?!a.checked:b);
		this.onCheckChange()
		}
	},
blur:function(){
	try{
		this.anchor.blur()
		}catch(a){}
},
animExpand:function(b){
	var a=Ext.get(this.ctNode);
	a.stopFx();
	if(!this.node.isExpandable()){
		this.updateExpandIcon();
		this.ctNode.style.display="";
		Ext.callback(b);
		return
	}
	this.animating=true;
	this.updateExpandIcon();
	a.slideIn("t",{
		callback:function(){
			this.animating=false;
			Ext.callback(b)
			},
		scope:this,
		duration:this.node.ownerTree.duration||0.25
		})
	},
highlight:function(){
	var a=this.node.getOwnerTree();
	Ext.fly(this.wrap).highlight(a.hlColor||"C3DAF9",{
		endColor:a.hlBaseColor
		})
	},
collapse:function(){
	this.updateExpandIcon();
	this.ctNode.style.display="none"
	},
animCollapse:function(b){
	var a=Ext.get(this.ctNode);
	a.enableDisplayMode("block");
	a.stopFx();
	this.animating=true;
	this.updateExpandIcon();
	a.slideOut("t",{
		callback:function(){
			this.animating=false;
			Ext.callback(b)
			},
		scope:this,
		duration:this.node.ownerTree.duration||0.25
		})
	},
getContainer:function(){
	return this.ctNode
	},
getEl:function(){
	return this.wrap
	},
appendDDGhost:function(a){
	a.appendChild(this.elNode.cloneNode(true))
	},
getDDRepairXY:function(){
	return Ext.lib.Dom.getXY(this.iconNode)
	},
onRender:function(){
	this.render()
	},
render:function(c){
	var e=this.node,b=e.attributes;
	var d=e.parentNode?e.parentNode.ui.getContainer():e.ownerTree.innerCt.dom;
	if(!this.rendered){
		this.rendered=true;
		this.renderElements(e,b,d,c);
		if(b.qtip){
			this.onTipChange(e,b.qtip,b.qtipTitle)
			}else{
			if(b.qtipCfg){
				b.qtipCfg.target=Ext.id(this.textNode);
				Ext.QuickTips.register(b.qtipCfg)
				}
			}
		this.initEvents();
	if(!this.node.expanded){
		this.updateExpandIcon(true)
		}
	}else{
	if(c===true){
		d.appendChild(this.wrap)
		}
	}
},
renderElements:function(e,l,k,m){
	this.indentMarkup=e.parentNode?e.parentNode.ui.getChildIndent():"";
	var g=Ext.isBoolean(l.checked),b,c=this.getHref(l.href),d=['<li class="x-tree-node"><div ext:tree-node-id="',e.id,'" class="x-tree-node-el x-tree-node-leaf x-unselectable ',l.cls,'" unselectable="on">','<span class="x-tree-node-indent">',this.indentMarkup,"</span>",'<img alt="" src="',this.emptyIcon,'" class="x-tree-ec-icon x-tree-elbow" />','<img alt="" src="',l.icon||this.emptyIcon,'" class="x-tree-node-icon',(l.icon?" x-tree-node-inline-icon":""),(l.iconCls?" "+l.iconCls:""),'" unselectable="on" />',g?('<input class="x-tree-node-cb" type="checkbox" '+(l.checked?'checked="checked" />':"/>")):"",'<a hidefocus="on" class="x-tree-node-anchor" href="',c,'" tabIndex="1" ',l.hrefTarget?' target="'+l.hrefTarget+'"':"",'><span unselectable="on">',e.text,"</span></a></div>",'<ul class="x-tree-node-ct" style="display:none;"></ul>',"</li>"].join("");
	if(m!==true&&e.nextSibling&&(b=e.nextSibling.ui.getEl())){
		this.wrap=Ext.DomHelper.insertHtml("beforeBegin",b,d)
		}else{
		this.wrap=Ext.DomHelper.insertHtml("beforeEnd",k,d)
		}
		this.elNode=this.wrap.childNodes[0];
	this.ctNode=this.wrap.childNodes[1];
	var i=this.elNode.childNodes;
	this.indentNode=i[0];
	this.ecNode=i[1];
	this.iconNode=i[2];
	var h=3;
	if(g){
		this.checkbox=i[3];
		this.checkbox.defaultChecked=this.checkbox.checked;
		h++
	}
	this.anchor=i[h];
	this.textNode=i[h].firstChild
	},
getHref:function(a){
	return Ext.isEmpty(a)?(Ext.isGecko?"":"#"):a
	},
getAnchor:function(){
	return this.anchor
	},
getTextEl:function(){
	return this.textNode
	},
getIconEl:function(){
	return this.iconNode
	},
isChecked:function(){
	return this.checkbox?this.checkbox.checked:false
	},
updateExpandIcon:function(){
	if(this.rendered){
		var g=this.node,d,c,a=g.isLast()?"x-tree-elbow-end":"x-tree-elbow",e=g.hasChildNodes();
		if(e||g.attributes.expandable){
			if(g.expanded){
				a+="-minus";
				d="x-tree-node-collapsed";
				c="x-tree-node-expanded"
				}else{
				a+="-plus";
				d="x-tree-node-expanded";
				c="x-tree-node-collapsed"
				}
				if(this.wasLeaf){
				this.removeClass("x-tree-node-leaf");
				this.wasLeaf=false
				}
				if(this.c1!=d||this.c2!=c){
				Ext.fly(this.elNode).replaceClass(d,c);
				this.c1=d;
				this.c2=c
				}
			}else{
		if(!this.wasLeaf){
			Ext.fly(this.elNode).replaceClass("x-tree-node-expanded","x-tree-node-collapsed");
			delete this.c1;
			delete this.c2;
			this.wasLeaf=true
			}
		}
	var b="x-tree-ec-icon "+a;
if(this.ecc!=b){
	this.ecNode.className=b;
	this.ecc=b
	}
}
},
onIdChange:function(a){
	if(this.rendered){
		this.elNode.setAttribute("ext:tree-node-id",a)
		}
	},
getChildIndent:function(){
	if(!this.childIndent){
		var a=[],b=this.node;
		while(b){
			if(!b.isRoot||(b.isRoot&&b.ownerTree.rootVisible)){
				if(!b.isLast()){
					a.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-elbow-line" />')
					}else{
					a.unshift('<img alt="" src="'+this.emptyIcon+'" class="x-tree-icon" />')
					}
				}
			b=b.parentNode
		}
		this.childIndent=a.join("")
	}
	return this.childIndent
},
renderIndent:function(){
	if(this.rendered){
		var a="",b=this.node.parentNode;
		if(b){
			a=b.ui.getChildIndent()
			}
			if(this.indentMarkup!=a){
			this.indentNode.innerHTML=a;
			this.indentMarkup=a
			}
			this.updateExpandIcon()
		}
	},
destroy:function(){
	if(this.elNode){
		Ext.dd.Registry.unregister(this.elNode.id)
		}
		Ext.each(["textnode","anchor","checkbox","indentNode","ecNode","iconNode","elNode","ctNode","wrap","holder"],function(a){
		if(this[a]){
			Ext.fly(this[a]).remove();
			delete this[a]
		}
	},this);
delete this.node
}
});
Ext.tree.RootTreeNodeUI=Ext.extend(Ext.tree.TreeNodeUI,{
	render:function(){
		if(!this.rendered){
			var a=this.node.ownerTree.innerCt.dom;
			this.node.expanded=true;
			a.innerHTML='<div class="x-tree-root-node"></div>';
			this.wrap=this.ctNode=a.firstChild
			}
		},
collapse:Ext.emptyFn,
expand:Ext.emptyFn
});
Ext.tree.TreeLoader=function(a){
	this.baseParams={};

	Ext.apply(this,a);
	this.addEvents("beforeload","load","loadexception");
	Ext.tree.TreeLoader.superclass.constructor.call(this);
	if(Ext.isString(this.paramOrder)){
		this.paramOrder=this.paramOrder.split(/[\s,|]/)
		}
	};

Ext.extend(Ext.tree.TreeLoader,Ext.util.Observable,{
	uiProviders:{},
	clearOnLoad:true,
	paramOrder:undefined,
	paramsAsHash:false,
	nodeParameter:"node",
	directFn:undefined,
	load:function(b,c,a){
		if(this.clearOnLoad){
			while(b.firstChild){
				b.removeChild(b.firstChild)
				}
			}
		if(this.doPreload(b)){
		this.runCallback(c,a||b,[b])
		}else{
		if(this.directFn||this.dataUrl||this.url){
			this.requestData(b,c,a||b)
			}
		}
},
doPreload:function(d){
	if(d.attributes.children){
		if(d.childNodes.length<1){
			var c=d.attributes.children;
			d.beginUpdate();
			for(var b=0,a=c.length;b<a;b++){
				var e=d.appendChild(this.createNode(c[b]));
				if(this.preloadChildren){
					this.doPreload(e)
					}
				}
			d.endUpdate()
		}
		return true
	}
	return false
},
getParams:function(g){
	var e=Ext.apply({},this.baseParams),h=this.nodeParameter,b=this.paramOrder;
	h&&(e[h]=g.id);
	if(this.directFn){
		var c=[g.id];
		if(b){
			if(h&&b.indexOf(h)>-1){
				c=[]
				}
				for(var d=0,a=b.length;d<a;d++){
				c.push(e[b[d]])
				}
			}else{
		if(this.paramsAsHash){
			c=[e]
			}
		}
	return c
}else{
	return e
	}
},
requestData:function(c,d,b){
	if(this.fireEvent("beforeload",this,c,d)!==false){
		if(this.directFn){
			var a=this.getParams(c);
			a.push(this.processDirectResponse.createDelegate(this,[{
				callback:d,
				node:c,
				scope:b
			}],true));
			this.directFn.apply(window,a)
			}else{
			this.transId=Ext.Ajax.request({
				method:this.requestMethod,
				url:this.dataUrl||this.url,
				success:this.handleResponse,
				failure:this.handleFailure,
				scope:this,
				argument:{
					callback:d,
					node:c,
					scope:b
				},
				params:this.getParams(c)
				})
			}
		}else{
	this.runCallback(d,b||c,[])
	}
},
processDirectResponse:function(a,b,c){
	if(b.status){
		this.handleResponse({
			responseData:Ext.isArray(a)?a:null,
			responseText:a,
			argument:c
		})
		}else{
		this.handleFailure({
			argument:c
		})
		}
	},
runCallback:function(a,c,b){
	if(Ext.isFunction(a)){
		a.apply(c,b)
		}
	},
isLoading:function(){
	return !!this.transId
	},
abort:function(){
	if(this.isLoading()){
		Ext.Ajax.abort(this.transId)
		}
	},
createNode:function(attr){
	if(this.baseAttrs){
		Ext.applyIf(attr,this.baseAttrs)
		}
		if(this.applyLoader!==false&&!attr.loader){
		attr.loader=this
		}
		if(Ext.isString(attr.uiProvider)){
		attr.uiProvider=this.uiProviders[attr.uiProvider]||eval(attr.uiProvider)
		}
		if(attr.nodeType){
		return new Ext.tree.TreePanel.nodeTypes[attr.nodeType](attr)
		}else{
		return attr.leaf?new Ext.tree.TreeNode(attr):new Ext.tree.AsyncTreeNode(attr)
		}
	},
processResponse:function(d,c,l,m){
	var p=d.responseText;
	try{
		var a=d.responseData||Ext.decode(p);
		c.beginUpdate();
		for(var g=0,h=a.length;g<h;g++){
			var b=this.createNode(a[g]);
			if(b){
				c.appendChild(b)
				}
			}
		c.endUpdate();
	this.runCallback(l,m||c,[c])
	}catch(k){
	this.handleFailure(d)
	}
},
handleResponse:function(c){
	this.transId=false;
	var b=c.argument;
	this.processResponse(c,b.node,b.callback,b.scope);
	this.fireEvent("load",this,b.node,c)
	},
handleFailure:function(c){
	this.transId=false;
	var b=c.argument;
	this.fireEvent("loadexception",this,b.node,c);
	this.runCallback(b.callback,b.scope||b.node,[b.node])
	},
destroy:function(){
	this.abort();
	this.purgeListeners()
	}
});
Ext.tree.TreeFilter=function(a,b){
	this.tree=a;
	this.filtered={};

	Ext.apply(this,b)
	};

Ext.tree.TreeFilter.prototype={
	clearBlank:false,
	reverse:false,
	autoClear:false,
	remove:false,
	filter:function(d,a,b){
		a=a||"text";
		var c;
		if(typeof d=="string"){
			var e=d.length;
			if(e==0&&this.clearBlank){
				this.clear();
				return
			}
			d=d.toLowerCase();
			c=function(g){
				return g.attributes[a].substr(0,e).toLowerCase()==d
				}
			}else{
		if(d.exec){
			c=function(g){
				return d.test(g.attributes[a])
				}
			}else{
		throw"Illegal filter type, must be string or regex"
		}
	}
this.filterBy(c,null,b)
},
filterBy:function(d,c,b){
	b=b||this.tree.root;
	if(this.autoClear){
		this.clear()
		}
		var a=this.filtered,i=this.reverse;
	var e=function(l){
		if(l==b){
			return true
			}
			if(a[l.id]){
			return false
			}
			var k=d.call(c||l,l);
		if(!k||i){
			a[l.id]=l;
			l.ui.hide();
			return false
			}
			return true
		};

	b.cascade(e);
	if(this.remove){
		for(var h in a){
			if(typeof h!="function"){
				var g=a[h];
				if(g&&g.parentNode){
					g.parentNode.removeChild(g)
					}
				}
		}
		}
},
clear:function(){
	var b=this.tree;
	var a=this.filtered;
	for(var d in a){
		if(typeof d!="function"){
			var c=a[d];
			if(c){
				c.ui.show()
				}
			}
	}
	this.filtered={}
}
};

Ext.tree.TreeSorter=Ext.extend(Object,{
	constructor:function(a,b){
		Ext.apply(this,b);
		a.on({
			scope:this,
			beforechildrenrendered:this.doSort,
			append:this.updateSort,
			insert:this.updateSort,
			textchange:this.updateSortParent
			});
		var c=this.dir&&this.dir.toLowerCase()=="desc",d=this.property||"text";
		sortType=this.sortType;
		folderSort=this.folderSort;
		caseSensitive=this.caseSensitive===true;
		leafAttr=this.leafAttr||"leaf";
		if(Ext.isString(sortType)){
			sortType=Ext.data.SortTypes[sortType]
			}
			this.sortFn=function(l,i){
			var g=l.attributes,e=i.attributes;
			if(folderSort){
				if(g[leafAttr]&&!e[leafAttr]){
					return 1
					}
					if(!g[leafAttr]&&e[leafAttr]){
					return -1
					}
				}
			var k=g[d],h=e[d],m=sortType?sortType(k):(caseSensitive?k:k.toUpperCase());
		v2=sortType?sortType(h):(caseSensitive?h:h.toUpperCase());
		if(m<v2){
			return c?1:-1
			}else{
			if(m>v2){
				return c?-1:1
				}
			}
		return 0
	}
},
doSort:function(a){
	a.sort(this.sortFn)
	},
updateSort:function(a,b){
	if(b.childrenRendered){
		this.doSort.defer(1,this,[b])
		}
	},
updateSortParent:function(a){
	var b=a.parentNode;
	if(b&&b.childrenRendered){
		this.doSort.defer(1,this,[b])
		}
	}
});
if(Ext.dd.DropZone){
	Ext.tree.TreeDropZone=function(a,b){
		this.allowParentInsert=b.allowParentInsert||false;
		this.allowContainerDrop=b.allowContainerDrop||false;
		this.appendOnly=b.appendOnly||false;
		Ext.tree.TreeDropZone.superclass.constructor.call(this,a.getTreeEl(),b);
		this.tree=a;
		this.dragOverData={};

		this.lastInsertClass="x-tree-no-status"
		};

	Ext.extend(Ext.tree.TreeDropZone,Ext.dd.DropZone,{
		ddGroup:"TreeDD",
		expandDelay:1000,
		expandNode:function(a){
			if(a.hasChildNodes()&&!a.isExpanded()){
				a.expand(false,null,this.triggerCacheRefresh.createDelegate(this))
				}
			},
	queueExpand:function(a){
		this.expandProcId=this.expandNode.defer(this.expandDelay,this,[a])
		},
	cancelExpand:function(){
		if(this.expandProcId){
			clearTimeout(this.expandProcId);
			this.expandProcId=false
			}
		},
	isValidDropPoint:function(a,l,i,d,c){
		if(!a||!c){
			return false
			}
			var g=a.node;
		var h=c.node;
		if(!(g&&g.isTarget&&l)){
			return false
			}
			if(l=="append"&&g.allowChildren===false){
			return false
			}
			if((l=="above"||l=="below")&&(g.parentNode&&g.parentNode.allowChildren===false)){
			return false
			}
			if(h&&(g==h||h.contains(g))){
			return false
			}
			var b=this.dragOverData;
		b.tree=this.tree;
		b.target=g;
		b.data=c;
		b.point=l;
		b.source=i;
		b.rawEvent=d;
		b.dropNode=h;
		b.cancel=false;
		var k=this.tree.fireEvent("nodedragover",b);
		return b.cancel===false&&k!==false
		},
	getDropPoint:function(h,g,m){
		var o=g.node;
		if(o.isRoot){
			return o.allowChildren!==false?"append":false
			}
			var c=g.ddel;
		var p=Ext.lib.Dom.getY(c),k=p+c.offsetHeight;
		var i=Ext.lib.Event.getPageY(h);
		var l=o.allowChildren===false||o.isLeaf();
		if(this.appendOnly||o.parentNode.allowChildren===false){
			return l?false:"append"
			}
			var d=false;
		if(!this.allowParentInsert){
			d=o.hasChildNodes()&&o.isExpanded()
			}
			var a=(k-p)/(l?2:3);
		if(i>=p&&i<(p+a)){
			return"above"
			}else{
			if(!d&&(l||i>=k-a&&i<=k)){
				return"below"
				}else{
				return"append"
				}
			}
	},
onNodeEnter:function(d,a,c,b){
	this.cancelExpand()
	},
onContainerOver:function(a,c,b){
	if(this.allowContainerDrop&&this.isValidDropPoint({
		ddel:this.tree.getRootNode().ui.elNode,
		node:this.tree.getRootNode()
		},"append",a,c,b)){
		return this.dropAllowed
		}
		return this.dropNotAllowed
	},
onNodeOver:function(b,i,h,g){
	var l=this.getDropPoint(h,b,i);
	var c=b.node;
	if(!this.expandProcId&&l=="append"&&c.hasChildNodes()&&!b.node.isExpanded()){
		this.queueExpand(c)
		}else{
		if(l!="append"){
			this.cancelExpand()
			}
		}
	var d=this.dropNotAllowed;
if(this.isValidDropPoint(b,l,i,h,g)){
	if(l){
		var a=b.ddel;
		var k;
		if(l=="above"){
			d=b.node.isFirst()?"x-tree-drop-ok-above":"x-tree-drop-ok-between";
			k="x-tree-drag-insert-above"
			}else{
			if(l=="below"){
				d=b.node.isLast()?"x-tree-drop-ok-below":"x-tree-drop-ok-between";
				k="x-tree-drag-insert-below"
				}else{
				d="x-tree-drop-ok-append";
				k="x-tree-drag-append"
				}
			}
		if(this.lastInsertClass!=k){
		Ext.fly(a).replaceClass(this.lastInsertClass,k);
		this.lastInsertClass=k
		}
	}
}
return d
},
onNodeOut:function(d,a,c,b){
	this.cancelExpand();
	this.removeDropIndicators(d)
	},
onNodeDrop:function(i,b,h,d){
	var a=this.getDropPoint(h,i,b);
	var g=i.node;
	g.ui.startDrop();
	if(!this.isValidDropPoint(i,a,b,h,d)){
		g.ui.endDrop();
		return false
		}
		var c=d.node||(b.getTreeNode?b.getTreeNode(d,g,a,h):null);
	return this.processDrop(g,d,a,b,h,c)
	},
onContainerDrop:function(a,g,c){
	if(this.allowContainerDrop&&this.isValidDropPoint({
		ddel:this.tree.getRootNode().ui.elNode,
		node:this.tree.getRootNode()
		},"append",a,g,c)){
		var d=this.tree.getRootNode();
		d.ui.startDrop();
		var b=c.node||(a.getTreeNode?a.getTreeNode(c,d,"append",g):null);
		return this.processDrop(d,c,"append",a,g,b)
		}
		return false
	},
processDrop:function(k,h,b,a,i,d){
	var g={
		tree:this.tree,
		target:k,
		data:h,
		point:b,
		source:a,
		rawEvent:i,
		dropNode:d,
		cancel:!d,
		dropStatus:false
	};

	var c=this.tree.fireEvent("beforenodedrop",g);
	if(c===false||g.cancel===true||!g.dropNode){
		k.ui.endDrop();
		return g.dropStatus
		}
		k=g.target;
	if(b=="append"&&!k.isExpanded()){
		k.expand(false,null,function(){
			this.completeDrop(g)
			}.createDelegate(this))
		}else{
		this.completeDrop(g)
		}
		return true
	},
completeDrop:function(h){
	var d=h.dropNode,e=h.point,c=h.target;
	if(!Ext.isArray(d)){
		d=[d]
		}
		var g;
	for(var b=0,a=d.length;b<a;b++){
		g=d[b];
		if(e=="above"){
			c.parentNode.insertBefore(g,c)
			}else{
			if(e=="below"){
				c.parentNode.insertBefore(g,c.nextSibling)
				}else{
				c.appendChild(g)
				}
			}
	}
	g.ui.focus();
if(Ext.enableFx&&this.tree.hlDrop){
	g.ui.highlight()
	}
	c.ui.endDrop();
this.tree.fireEvent("nodedrop",h)
},
afterNodeMoved:function(a,c,g,d,b){
	if(Ext.enableFx&&this.tree.hlDrop){
		b.ui.focus();
		b.ui.highlight()
		}
		this.tree.fireEvent("nodedrop",this.tree,d,c,a,g)
	},
getTree:function(){
	return this.tree
	},
removeDropIndicators:function(b){
	if(b&&b.ddel){
		var a=b.ddel;
		Ext.fly(a).removeClass(["x-tree-drag-insert-above","x-tree-drag-insert-below","x-tree-drag-append"]);
		this.lastInsertClass="_noclass"
		}
	},
beforeDragDrop:function(b,a,c){
	this.cancelExpand();
	return true
	},
afterRepair:function(a){
	if(a&&Ext.enableFx){
		a.node.ui.highlight()
		}
		this.hideProxy()
	}
})
}
if(Ext.dd.DragZone){
	Ext.tree.TreeDragZone=function(a,b){
		Ext.tree.TreeDragZone.superclass.constructor.call(this,a.innerCt,b);
		this.tree=a
		};

	Ext.extend(Ext.tree.TreeDragZone,Ext.dd.DragZone,{
		ddGroup:"TreeDD",
		onBeforeDrag:function(a,b){
			var c=a.node;
			return c&&c.draggable&&!c.disabled
			},
		onInitDrag:function(b){
			var a=this.dragData;
			this.tree.getSelectionModel().select(a.node);
			this.tree.eventModel.disable();
			this.proxy.update("");
			a.node.ui.appendDDGhost(this.proxy.ghost.dom);
			this.tree.fireEvent("startdrag",this.tree,a.node,b)
			},
		getRepairXY:function(b,a){
			return a.node.ui.getDDRepairXY()
			},
		onEndDrag:function(a,b){
			this.tree.eventModel.enable.defer(100,this.tree.eventModel);
			this.tree.fireEvent("enddrag",this.tree,a.node,b)
			},
		onValidDrop:function(a,b,c){
			this.tree.fireEvent("dragdrop",this.tree,this.dragData.node,a,b);
			this.hideProxy()
			},
		beforeInvalidDrop:function(a,c){
			var b=this.tree.getSelectionModel();
			b.clearSelections();
			b.select(this.dragData.node)
			},
		afterRepair:function(){
			if(Ext.enableFx&&this.tree.hlDrop){
				Ext.Element.fly(this.dragData.ddel).highlight(this.hlColor||"c3daf9")
				}
				this.dragging=false
			}
		})
	}
	Ext.tree.TreeEditor=function(a,c,b){
	c=c||{};

	var d=c.events?c:new Ext.form.TextField(c);
	Ext.tree.TreeEditor.superclass.constructor.call(this,d,b);
	this.tree=a;
	if(!a.rendered){
		a.on("render",this.initEditor,this)
		}else{
		this.initEditor(a)
		}
	};

Ext.extend(Ext.tree.TreeEditor,Ext.Editor,{
	alignment:"l-l",
	autoSize:false,
	hideEl:false,
	cls:"x-small-editor x-tree-editor",
	shim:false,
	shadow:"frame",
	maxWidth:250,
	editDelay:350,
	initEditor:function(a){
		a.on({
			scope:this,
			beforeclick:this.beforeNodeClick,
			dblclick:this.onNodeDblClick
			});
		this.on({
			scope:this,
			complete:this.updateNode,
			beforestartedit:this.fitToTree,
			specialkey:this.onSpecialKey
			});
		this.on("startedit",this.bindScroll,this,{
			delay:10
		})
		},
	fitToTree:function(b,c){
		var e=this.tree.getTreeEl().dom,d=c.dom;
		if(e.scrollLeft>d.offsetLeft){
			e.scrollLeft=d.offsetLeft
			}
			var a=Math.min(this.maxWidth,(e.clientWidth>20?e.clientWidth:e.offsetWidth)-Math.max(0,d.offsetLeft-e.scrollLeft)-5);
		this.setSize(a,"")
		},
	triggerEdit:function(a,c){
		this.completeEdit();
		if(a.attributes.editable!==false){
			this.editNode=a;
			if(this.tree.autoScroll){
				Ext.fly(a.ui.getEl()).scrollIntoView(this.tree.body)
				}
				var b=a.text||"";
			if(!Ext.isGecko&&Ext.isEmpty(a.text)){
				a.setText("&#160;")
				}
				this.autoEditTimer=this.startEdit.defer(this.editDelay,this,[a.ui.textNode,b]);
			return false
			}
		},
bindScroll:function(){
	this.tree.getTreeEl().on("scroll",this.cancelEdit,this)
	},
beforeNodeClick:function(a,b){
	clearTimeout(this.autoEditTimer);
	if(this.tree.getSelectionModel().isSelected(a)){
		b.stopEvent();
		return this.triggerEdit(a)
		}
	},
onNodeDblClick:function(a,b){
	clearTimeout(this.autoEditTimer)
	},
updateNode:function(a,b){
	this.tree.getTreeEl().un("scroll",this.cancelEdit,this);
	this.editNode.setText(b)
	},
onHide:function(){
	Ext.tree.TreeEditor.superclass.onHide.call(this);
	if(this.editNode){
		this.editNode.ui.focus.defer(50,this.editNode.ui)
		}
	},
onSpecialKey:function(c,b){
	var a=b.getKey();
	if(a==b.ESC){
		b.stopEvent();
		this.cancelEdit()
		}else{
		if(a==b.ENTER&&!b.hasModifier()){
			b.stopEvent();
			this.completeEdit()
			}
		}
},
onDestroy:function(){
	clearTimeout(this.autoEditTimer);
	Ext.tree.TreeEditor.superclass.onDestroy.call(this);
	var a=this.tree;
	a.un("beforeclick",this.beforeNodeClick,this);
	a.un("dblclick",this.onNodeDblClick,this)
	}
});
/* SWFObject v2.2 <http://code.google.com/p/swfobject/>
    is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*/
var swfobject=function(){
	var F="undefined",t="object",U="Shockwave Flash",Y="ShockwaveFlash.ShockwaveFlash",s="application/x-shockwave-flash",T="SWFObjectExprInst",z="onreadystatechange",Q=window,l=document,v=navigator,V=false,W=[i],q=[],P=[],K=[],n,S,G,D,L=false,a=false,p,I,o=true,O=function(){
		var ac=typeof l.getElementById!=F&&typeof l.getElementsByTagName!=F&&typeof l.createElement!=F,aj=v.userAgent.toLowerCase(),aa=v.platform.toLowerCase(),ag=aa?(/win/).test(aa):/win/.test(aj),ae=aa?(/mac/).test(aa):/mac/.test(aj),ah=/webkit/.test(aj)?parseFloat(aj.replace(/^.*webkit\/(\d+(\.\d+)?).*$/,"$1")):false,Z=!+"\v1",ai=[0,0,0],ad=null;
		if(typeof v.plugins!=F&&typeof v.plugins[U]==t){
			ad=v.plugins[U].description;
			if(ad&&!(typeof v.mimeTypes!=F&&v.mimeTypes[s]&&!v.mimeTypes[s].enabledPlugin)){
				V=true;
				Z=false;
				ad=ad.replace(/^.*\s+(\S+\s+\S+$)/,"$1");
				ai[0]=parseInt(ad.replace(/^(.*)\..*$/,"$1"),10);
				ai[1]=parseInt(ad.replace(/^.*\.(.*)\s.*$/,"$1"),10);
				ai[2]=/[a-zA-Z]/.test(ad)?parseInt(ad.replace(/^.*[a-zA-Z]+(.*)$/,"$1"),10):0
				}
			}else{
		if(typeof Q.ActiveXObject!=F){
			try{
				var af=new ActiveXObject(Y);
				if(af){
					ad=af.GetVariable("$version");
					if(ad){
						Z=true;
						ad=ad.split(" ")[1].split(",");
						ai=[parseInt(ad[0],10),parseInt(ad[1],10),parseInt(ad[2],10)]
						}
					}
			}catch(ab){}
}
}
return{
	w3:ac,
	pv:ai,
	wk:ah,
	ie:Z,
	win:ag,
	mac:ae
}
}(),m=function(){
	if(!O.w3){
		return
	}
	if((typeof l.readyState!=F&&l.readyState=="complete")||(typeof l.readyState==F&&(l.getElementsByTagName("body")[0]||l.body))){
		g()
		}
		if(!L){
		if(typeof l.addEventListener!=F){
			l.addEventListener("DOMContentLoaded",g,false)
			}
			if(O.ie&&O.win){
			l.attachEvent(z,function(){
				if(l.readyState=="complete"){
					l.detachEvent(z,arguments.callee);
					g()
					}
				});
		if(Q==top){
			(function(){
				if(L){
					return
				}
				try{
					l.documentElement.doScroll("left")
					}catch(Z){
					setTimeout(arguments.callee,0);
					return
				}
				g()
				})()
			}
		}
	if(O.wk){
	(function(){
		if(L){
			return
		}
		if(!(/loaded|complete/).test(l.readyState)){
			setTimeout(arguments.callee,0);
			return
		}
		g()
		})()
	}
	u(g)
}
}();
function g(){
	if(L){
		return
	}
	try{
		var ab=l.getElementsByTagName("body")[0].appendChild(E("span"));
		ab.parentNode.removeChild(ab)
		}catch(ac){
		return
	}
	L=true;
	var Z=W.length;
	for(var aa=0;aa<Z;aa++){
		W[aa]()
		}
	}
	function M(Z){
	if(L){
		Z()
		}else{
		W[W.length]=Z
		}
	}
function u(aa){
	if(typeof Q.addEventListener!=F){
		Q.addEventListener("load",aa,false)
		}else{
		if(typeof l.addEventListener!=F){
			l.addEventListener("load",aa,false)
			}else{
			if(typeof Q.attachEvent!=F){
				k(Q,"onload",aa)
				}else{
				if(typeof Q.onload=="function"){
					var Z=Q.onload;
					Q.onload=function(){
						Z();
						aa()
						}
					}else{
				Q.onload=aa
				}
			}
	}
}
}
function i(){
	if(V){
		X()
		}else{
		J()
		}
	}
function X(){
	var Z=l.getElementsByTagName("body")[0];
	var ac=E(t);
	ac.setAttribute("type",s);
	var ab=Z.appendChild(ac);
	if(ab){
		var aa=0;
		(function(){
			if(typeof ab.GetVariable!=F){
				var ad=ab.GetVariable("$version");
				if(ad){
					ad=ad.split(" ")[1].split(",");
					O.pv=[parseInt(ad[0],10),parseInt(ad[1],10),parseInt(ad[2],10)]
					}
				}else{
			if(aa<10){
				aa++;
				setTimeout(arguments.callee,10);
				return
			}
		}
		Z.removeChild(ac);
		ab=null;
		J()
		})()
}else{
	J()
	}
}
function J(){
	var ai=q.length;
	if(ai>0){
		for(var ah=0;ah<ai;ah++){
			var aa=q[ah].id;
			var ad=q[ah].callbackFn;
			var ac={
				success:false,
				id:aa
			};

			if(O.pv[0]>0){
				var ag=c(aa);
				if(ag){
					if(H(q[ah].swfVersion)&&!(O.wk&&O.wk<312)){
						y(aa,true);
						if(ad){
							ac.success=true;
							ac.ref=B(aa);
							ad(ac)
							}
						}else{
					if(q[ah].expressInstall&&C()){
						var ak={};

						ak.data=q[ah].expressInstall;
						ak.width=ag.getAttribute("width")||"0";
						ak.height=ag.getAttribute("height")||"0";
						if(ag.getAttribute("class")){
							ak.styleclass=ag.getAttribute("class")
							}
							if(ag.getAttribute("align")){
							ak.align=ag.getAttribute("align")
							}
							var aj={};

						var Z=ag.getElementsByTagName("param");
						var ae=Z.length;
						for(var af=0;af<ae;af++){
							if(Z[af].getAttribute("name").toLowerCase()!="movie"){
								aj[Z[af].getAttribute("name")]=Z[af].getAttribute("value")
								}
							}
						R(ak,aj,aa,ad)
					}else{
					r(ag);
					if(ad){
						ad(ac)
						}
					}
			}
		}
}else{
	y(aa,true);
	if(ad){
		var ab=B(aa);
		if(ab&&typeof ab.SetVariable!=F){
			ac.success=true;
			ac.ref=ab
			}
			ad(ac)
		}
	}
}
}
}
function B(ac){
	var Z=null;
	var aa=c(ac);
	if(aa&&aa.nodeName=="OBJECT"){
		if(typeof aa.SetVariable!=F){
			Z=aa
			}else{
			var ab=aa.getElementsByTagName(t)[0];
			if(ab){
				Z=ab
				}
			}
	}
return Z
}
function C(){
	return !a&&H("6.0.65")&&(O.win||O.mac)&&!(O.wk&&O.wk<312)
	}
	function R(ac,ad,Z,ab){
	a=true;
	G=ab||null;
	D={
		success:false,
		id:Z
	};

	var ag=c(Z);
	if(ag){
		if(ag.nodeName=="OBJECT"){
			n=h(ag);
			S=null
			}else{
			n=ag;
			S=Z
			}
			ac.id=T;
		if(typeof ac.width==F||(!(/%$/).test(ac.width)&&parseInt(ac.width,10)<310)){
			ac.width="310"
			}
			if(typeof ac.height==F||(!(/%$/).test(ac.height)&&parseInt(ac.height,10)<137)){
			ac.height="137"
			}
			l.title=l.title.slice(0,47)+" - Flash Player Installation";
		var af=O.ie&&O.win?"ActiveX":"PlugIn",ae="MMredirectURL="+Q.location.toString().replace(/&/g,"%26")+"&MMplayerType="+af+"&MMdoctitle="+l.title;
		if(typeof ad.flashvars!=F){
			ad.flashvars+="&"+ae
			}else{
			ad.flashvars=ae
			}
			if(O.ie&&O.win&&ag.readyState!=4){
			var aa=E("div");
			Z+="SWFObjectNew";
			aa.setAttribute("id",Z);
			ag.parentNode.insertBefore(aa,ag);
			ag.style.display="none";
			(function(){
				if(ag.readyState==4){
					ag.parentNode.removeChild(ag)
					}else{
					setTimeout(arguments.callee,10)
					}
				})()
		}
		w(ac,ad,Z)
	}
}
function r(aa){
	if(O.ie&&O.win&&aa.readyState!=4){
		var Z=E("div");
		aa.parentNode.insertBefore(Z,aa);
		Z.parentNode.replaceChild(h(aa),Z);
		aa.style.display="none";
		(function(){
			if(aa.readyState==4){
				aa.parentNode.removeChild(aa)
				}else{
				setTimeout(arguments.callee,10)
				}
			})()
	}else{
	aa.parentNode.replaceChild(h(aa),aa)
	}
}
function h(ae){
	var ad=E("div");
	if(O.win&&O.ie){
		ad.innerHTML=ae.innerHTML
		}else{
		var aa=ae.getElementsByTagName(t)[0];
		if(aa){
			var af=aa.childNodes;
			if(af){
				var Z=af.length;
				for(var ab=0;ab<Z;ab++){
					if(!(af[ab].nodeType==1&&af[ab].nodeName=="PARAM")&&!(af[ab].nodeType==8)){
						ad.appendChild(af[ab].cloneNode(true))
						}
					}
				}
		}
}
return ad
}
function w(ak,ai,aa){
	var Z,ac=c(aa);
	if(O.wk&&O.wk<312){
		return Z
		}
		if(ac){
		if(typeof ak.id==F){
			ak.id=aa
			}
			if(O.ie&&O.win){
			var aj="";
			for(var ag in ak){
				if(ak[ag]!=Object.prototype[ag]){
					if(ag.toLowerCase()=="data"){
						ai.movie=ak[ag]
						}else{
						if(ag.toLowerCase()=="styleclass"){
							aj+=' class="'+ak[ag]+'"'
							}else{
							if(ag.toLowerCase()!="classid"){
								aj+=" "+ag+'="'+ak[ag]+'"'
								}
							}
					}
			}
			}
		var ah="";
for(var af in ai){
	if(ai[af]!=Object.prototype[af]){
		ah+='<param name="'+af+'" value="'+ai[af]+'" />'
		}
	}
ac.outerHTML='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"'+aj+">"+ah+"</object>";
P[P.length]=ak.id;
Z=c(ak.id)
}else{
	var ab=E(t);
	ab.setAttribute("type",s);
	for(var ae in ak){
		if(ak[ae]!=Object.prototype[ae]){
			if(ae.toLowerCase()=="styleclass"){
				ab.setAttribute("class",ak[ae])
				}else{
				if(ae.toLowerCase()!="classid"){
					ab.setAttribute(ae,ak[ae])
					}
				}
		}
	}
	for(var ad in ai){
	if(ai[ad]!=Object.prototype[ad]&&ad.toLowerCase()!="movie"){
		e(ab,ad,ai[ad])
		}
	}
ac.parentNode.replaceChild(ab,ac);
Z=ab
}
}
return Z
}
function e(ab,Z,aa){
	var ac=E("param");
	ac.setAttribute("name",Z);
	ac.setAttribute("value",aa);
	ab.appendChild(ac)
	}
	function A(aa){
	var Z=c(aa);
	if(Z&&Z.nodeName=="OBJECT"){
		if(O.ie&&O.win){
			Z.style.display="none";
			(function(){
				if(Z.readyState==4){
					b(aa)
					}else{
					setTimeout(arguments.callee,10)
					}
				})()
		}else{
		Z.parentNode.removeChild(Z)
		}
	}
}
function b(ab){
	var aa=c(ab);
	if(aa){
		for(var Z in aa){
			if(typeof aa[Z]=="function"){
				aa[Z]=null
				}
			}
		aa.parentNode.removeChild(aa)
	}
}
function c(ab){
	var Z=null;
	try{
		Z=l.getElementById(ab)
		}catch(aa){}
	return Z
	}
	function E(Z){
	return l.createElement(Z)
	}
	function k(ab,Z,aa){
	ab.attachEvent(Z,aa);
	K[K.length]=[ab,Z,aa]
	}
	function H(ab){
	var aa=O.pv,Z=ab.split(".");
	Z[0]=parseInt(Z[0],10);
	Z[1]=parseInt(Z[1],10)||0;
	Z[2]=parseInt(Z[2],10)||0;
	return(aa[0]>Z[0]||(aa[0]==Z[0]&&aa[1]>Z[1])||(aa[0]==Z[0]&&aa[1]==Z[1]&&aa[2]>=Z[2]))?true:false
	}
	function x(ae,aa,af,ad){
	if(O.ie&&O.mac){
		return
	}
	var ac=l.getElementsByTagName("head")[0];
	if(!ac){
		return
	}
	var Z=(af&&typeof af=="string")?af:"screen";
	if(ad){
		p=null;
		I=null
		}
		if(!p||I!=Z){
		var ab=E("style");
		ab.setAttribute("type","text/css");
		ab.setAttribute("media",Z);
		p=ac.appendChild(ab);
		if(O.ie&&O.win&&typeof l.styleSheets!=F&&l.styleSheets.length>0){
			p=l.styleSheets[l.styleSheets.length-1]
			}
			I=Z
		}
		if(O.ie&&O.win){
		if(p&&typeof p.addRule==t){
			p.addRule(ae,aa)
			}
		}else{
	if(p&&typeof l.createTextNode!=F){
		p.appendChild(l.createTextNode(ae+" {"+aa+"}"))
		}
	}
}
function y(ab,Z){
	if(!o){
		return
	}
	var aa=Z?"visible":"hidden";
	if(L&&c(ab)){
		c(ab).style.visibility=aa
		}else{
		x("#"+ab,"visibility:"+aa)
		}
	}
function N(aa){
	var ab=/[\\\"<>\.;]/;
	var Z=ab.exec(aa)!=null;
	return Z&&typeof encodeURIComponent!=F?encodeURIComponent(aa):aa
	}
	var d=function(){
	if(O.ie&&O.win){
		window.attachEvent("onunload",function(){
			var ae=K.length;
			for(var ad=0;ad<ae;ad++){
				K[ad][0].detachEvent(K[ad][1],K[ad][2])
				}
				var ab=P.length;
			for(var ac=0;ac<ab;ac++){
				A(P[ac])
				}
				for(var aa in O){
				O[aa]=null
				}
				O=null;
			for(var Z in swfobject){
				swfobject[Z]=null
				}
				swfobject=null
			})
		}
	}();
return{
	registerObject:function(ad,Z,ac,ab){
		if(O.w3&&ad&&Z){
			var aa={};

			aa.id=ad;
			aa.swfVersion=Z;
			aa.expressInstall=ac;
			aa.callbackFn=ab;
			q[q.length]=aa;
			y(ad,false)
			}else{
			if(ab){
				ab({
					success:false,
					id:ad
				})
				}
			}
	},
getObjectById:function(Z){
	if(O.w3){
		return B(Z)
		}
	},
embedSWF:function(ad,aj,ag,ai,aa,ac,ab,af,ah,ae){
	var Z={
		success:false,
		id:aj
	};

	if(O.w3&&!(O.wk&&O.wk<312)&&ad&&aj&&ag&&ai&&aa){
		y(aj,false);
		M(function(){
			ag+="";
			ai+="";
			var al={};

			if(ah&&typeof ah===t){
				for(var an in ah){
					al[an]=ah[an]
					}
				}
				al.data=ad;
		al.width=ag;
		al.height=ai;
		var ao={};

		if(af&&typeof af===t){
			for(var am in af){
				ao[am]=af[am]
				}
			}
			if(ab&&typeof ab===t){
			for(var ak in ab){
				if(typeof ao.flashvars!=F){
					ao.flashvars+="&"+ak+"="+ab[ak]
					}else{
					ao.flashvars=ak+"="+ab[ak]
					}
				}
			}
			if(H(aa)){
	var ap=w(al,ao,aj);
	if(al.id==aj){
		y(aj,true)
		}
		Z.success=true;
	Z.ref=ap
	}else{
	if(ac&&C()){
		al.data=ac;
		R(al,ao,aj,ae);
		return
	}else{
		y(aj,true)
		}
	}
if(ae){
	ae(Z)
	}
})
}else{
	if(ae){
		ae(Z)
		}
	}
},
switchOffAutoHideShow:function(){
	o=false
	},
ua:O,
getFlashPlayerVersion:function(){
	return{
		major:O.pv[0],
		minor:O.pv[1],
		release:O.pv[2]
		}
	},
hasFlashPlayerVersion:H,
createSWF:function(ab,aa,Z){
	if(O.w3){
		return w(ab,aa,Z)
		}else{
		return undefined
		}
	},
showExpressInstall:function(ab,ac,Z,aa){
	if(O.w3&&C()){
		R(ab,ac,Z,aa)
		}
	},
removeSWF:function(Z){
	if(O.w3){
		A(Z)
		}
	},
createCSS:function(ac,ab,aa,Z){
	if(O.w3){
		x(ac,ab,aa,Z)
		}
	},
addDomLoadEvent:M,
addLoadEvent:u,
getQueryParamValue:function(ac){
	var ab=l.location.search||l.location.hash;
	if(ab){
		if(/\?/.test(ab)){
			ab=ab.split("?")[1]
			}
			if(ac==null){
			return N(ab)
			}
			var aa=ab.split("&");
		for(var Z=0;Z<aa.length;Z++){
			if(aa[Z].substring(0,aa[Z].indexOf("="))==ac){
				return N(aa[Z].substring((aa[Z].indexOf("=")+1)))
				}
			}
		}
	return""
},
expressInstallCallback:function(){
	if(a){
		var Z=c(T);
		if(Z&&n){
			Z.parentNode.replaceChild(n,Z);
			if(S){
				y(S,true);
				if(O.ie&&O.win){
					n.style.display="block"
					}
				}
			if(G){
			G(D)
			}
		}
	a=false
}
}
}
}();
Ext.FlashComponent=Ext.extend(Ext.BoxComponent,{
	flashVersion:"9.0.115",
	backgroundColor:"#ffffff",
	wmode:"opaque",
	flashVars:undefined,
	flashParams:undefined,
	url:undefined,
	swfId:undefined,
	swfWidth:"100%",
	swfHeight:"100%",
	expressInstall:false,
	initComponent:function(){
		Ext.FlashComponent.superclass.initComponent.call(this);
		this.addEvents("initialize")
		},
	onRender:function(){
		Ext.FlashComponent.superclass.onRender.apply(this,arguments);
		var b=Ext.apply({
			allowScriptAccess:"always",
			bgcolor:this.backgroundColor,
			wmode:this.wmode
			},this.flashParams),a=Ext.apply({
			allowedDomain:document.location.hostname,
			YUISwfId:this.getId(),
			YUIBridgeCallback:"Ext.FlashEventProxy.onEvent"
		},this.flashVars);
		new swfobject.embedSWF(this.url,this.id,this.swfWidth,this.swfHeight,this.flashVersion,this.expressInstall?Ext.FlashComponent.EXPRESS_INSTALL_URL:undefined,a,b);
		this.swf=Ext.getDom(this.id);
		this.el=Ext.get(this.swf)
		},
	getSwfId:function(){
		return this.swfId||(this.swfId="extswf"+(++Ext.Component.AUTO_ID))
		},
	getId:function(){
		return this.id||(this.id="extflashcmp"+(++Ext.Component.AUTO_ID))
		},
	onFlashEvent:function(a){
		switch(a.type){
			case"swfReady":
				this.initSwf();
				return;
			case"log":
				return
				}
				a.component=this;
		this.fireEvent(a.type.toLowerCase().replace(/event$/,""),a)
		},
	initSwf:function(){
		this.onSwfReady(!!this.isInitialized);
		this.isInitialized=true;
		this.fireEvent("initialize",this)
		},
	beforeDestroy:function(){
		if(this.rendered){
			swfobject.removeSWF(this.swf.id)
			}
			Ext.FlashComponent.superclass.beforeDestroy.call(this)
		},
	onSwfReady:Ext.emptyFn
	});
Ext.FlashComponent.EXPRESS_INSTALL_URL="http://swfobject.googlecode.com/svn/trunk/swfobject/expressInstall.swf";
Ext.reg("flash",Ext.FlashComponent);
Ext.FlashEventProxy={
	onEvent:function(c,b){
		var a=Ext.getCmp(c);
		if(a){
			a.onFlashEvent(b)
			}else{
			arguments.callee.defer(10,this,[c,b])
			}
		}
};

Ext.chart.Chart=Ext.extend(Ext.FlashComponent,{
	refreshBuffer:100,
	chartStyle:{
		padding:10,
		animationEnabled:true,
		font:{
			name:"Tahoma",
			color:4473924,
			size:11
		},
		dataTip:{
			padding:5,
			border:{
				color:10075112,
				size:1
			},
			background:{
				color:14346230,
				alpha:0.9
			},
			font:{
				name:"Tahoma",
				color:1393291,
				size:10,
				bold:true
			}
		}
	},
extraStyle:null,
seriesStyles:null,
disableCaching:Ext.isIE||Ext.isOpera,
disableCacheParam:"_dc",
initComponent:function(){
	Ext.chart.Chart.superclass.initComponent.call(this);
	if(!this.url){
		this.url=Ext.chart.Chart.CHART_URL
		}
		if(this.disableCaching){
		this.url=Ext.urlAppend(this.url,String.format("{0}={1}",this.disableCacheParam,new Date().getTime()))
		}
		this.addEvents("itemmouseover","itemmouseout","itemclick","itemdoubleclick","itemdragstart","itemdrag","itemdragend","beforerefresh","refresh");
	this.store=Ext.StoreMgr.lookup(this.store)
	},
setStyle:function(a,b){
	this.swf.setStyle(a,Ext.encode(b))
	},
setStyles:function(a){
	this.swf.setStyles(Ext.encode(a))
	},
setSeriesStyles:function(b){
	this.seriesStyles=b;
	var a=[];
	Ext.each(b,function(c){
		a.push(Ext.encode(c))
		});
	this.swf.setSeriesStyles(a)
	},
setCategoryNames:function(a){
	this.swf.setCategoryNames(a)
	},
setLegendRenderer:function(c,b){
	var a=this;
	b=b||a;
	a.removeFnProxy(a.legendFnName);
	a.legendFnName=a.createFnProxy(function(d){
		return c.call(b,d)
		});
	a.swf.setLegendLabelFunction(a.legendFnName)
	},
setTipRenderer:function(c,b){
	var a=this;
	b=b||a;
	a.removeFnProxy(a.tipFnName);
	a.tipFnName=a.createFnProxy(function(h,e,g){
		var d=a.store.getAt(e);
		return c.call(b,a,d,e,g)
		});
	a.swf.setDataTipFunction(a.tipFnName)
	},
setSeries:function(a){
	this.series=a;
	this.refresh()
	},
bindStore:function(a,b){
	if(!b&&this.store){
		if(a!==this.store&&this.store.autoDestroy){
			this.store.destroy()
			}else{
			this.store.un("datachanged",this.refresh,this);
			this.store.un("add",this.delayRefresh,this);
			this.store.un("remove",this.delayRefresh,this);
			this.store.un("update",this.delayRefresh,this);
			this.store.un("clear",this.refresh,this)
			}
		}
	if(a){
	a=Ext.StoreMgr.lookup(a);
	a.on({
		scope:this,
		datachanged:this.refresh,
		add:this.delayRefresh,
		remove:this.delayRefresh,
		update:this.delayRefresh,
		clear:this.refresh
		})
	}
	this.store=a;
if(a&&!b){
	this.refresh()
	}
},
onSwfReady:function(b){
	Ext.chart.Chart.superclass.onSwfReady.call(this,b);
	var a;
	this.swf.setType(this.type);
	if(this.chartStyle){
		this.setStyles(Ext.apply({},this.extraStyle,this.chartStyle))
		}
		if(this.categoryNames){
		this.setCategoryNames(this.categoryNames)
		}
		if(this.tipRenderer){
		a=this.getFunctionRef(this.tipRenderer);
		this.setTipRenderer(a.fn,a.scope)
		}
		if(this.legendRenderer){
		a=this.getFunctionRef(this.legendRenderer);
		this.setLegendRenderer(a.fn,a.scope)
		}
		if(!b){
		this.bindStore(this.store,true)
		}
		this.refresh.defer(10,this)
	},
delayRefresh:function(){
	if(!this.refreshTask){
		this.refreshTask=new Ext.util.DelayedTask(this.refresh,this)
		}
		this.refreshTask.delay(this.refreshBuffer)
	},
refresh:function(){
	if(this.fireEvent("beforerefresh",this)!==false){
		var m=false;
		var k=[],c=this.store.data.items;
		for(var g=0,l=c.length;g<l;g++){
			k[g]=c[g].data
			}
			var e=[];
		var d=0;
		var n=null;
		var h=0;
		if(this.series){
			d=this.series.length;
			for(h=0;h<d;h++){
				n=this.series[h];
				var b={};

				for(var a in n){
					if(a=="style"&&n.style!==null){
						b.style=Ext.encode(n.style);
						m=true
						}else{
						b[a]=n[a]
						}
					}
				e.push(b)
				}
			}
		if(d>0){
	for(h=0;h<d;h++){
		n=e[h];
		if(!n.type){
			n.type=this.type
			}
			n.dataProvider=k
		}
	}else{
	e.push({
		type:this.type,
		dataProvider:k
	})
	}
	this.swf.setDataProvider(e);
if(this.seriesStyles){
	this.setSeriesStyles(this.seriesStyles)
	}
	this.fireEvent("refresh",this)
}
},
createFnProxy:function(a){
	var b="extFnProxy"+(++Ext.chart.Chart.PROXY_FN_ID);
	Ext.chart.Chart.proxyFunction[b]=a;
	return"Ext.chart.Chart.proxyFunction."+b
	},
removeFnProxy:function(a){
	if(!Ext.isEmpty(a)){
		a=a.replace("Ext.chart.Chart.proxyFunction.","");
		delete Ext.chart.Chart.proxyFunction[a]
	}
},
getFunctionRef:function(a){
	if(Ext.isFunction(a)){
		return{
			fn:a,
			scope:this
		}
	}else{
	return{
		fn:a.fn,
		scope:a.scope||this
		}
	}
},
onDestroy:function(){
	if(this.refreshTask&&this.refreshTask.cancel){
		this.refreshTask.cancel()
		}
		Ext.chart.Chart.superclass.onDestroy.call(this);
	this.bindStore(null);
	this.removeFnProxy(this.tipFnName);
	this.removeFnProxy(this.legendFnName)
	}
});
Ext.reg("chart",Ext.chart.Chart);
Ext.chart.Chart.PROXY_FN_ID=0;
Ext.chart.Chart.proxyFunction={};

Ext.chart.Chart.CHART_URL="http://yui.yahooapis.com/2.8.2/build/charts/assets/charts.swf";
Ext.chart.PieChart=Ext.extend(Ext.chart.Chart,{
	type:"pie",
	onSwfReady:function(a){
		Ext.chart.PieChart.superclass.onSwfReady.call(this,a);
		this.setDataField(this.dataField);
		this.setCategoryField(this.categoryField)
		},
	setDataField:function(a){
		this.dataField=a;
		this.swf.setDataField(a)
		},
	setCategoryField:function(a){
		this.categoryField=a;
		this.swf.setCategoryField(a)
		}
	});
Ext.reg("piechart",Ext.chart.PieChart);
Ext.chart.CartesianChart=Ext.extend(Ext.chart.Chart,{
	onSwfReady:function(a){
		Ext.chart.CartesianChart.superclass.onSwfReady.call(this,a);
		this.labelFn=[];
		if(this.xField){
			this.setXField(this.xField)
			}
			if(this.yField){
			this.setYField(this.yField)
			}
			if(this.xAxis){
			this.setXAxis(this.xAxis)
			}
			if(this.xAxes){
			this.setXAxes(this.xAxes)
			}
			if(this.yAxis){
			this.setYAxis(this.yAxis)
			}
			if(this.yAxes){
			this.setYAxes(this.yAxes)
			}
			if(Ext.isDefined(this.constrainViewport)){
			this.swf.setConstrainViewport(this.constrainViewport)
			}
		},
setXField:function(a){
	this.xField=a;
	this.swf.setHorizontalField(a)
	},
setYField:function(a){
	this.yField=a;
	this.swf.setVerticalField(a)
	},
setXAxis:function(a){
	this.xAxis=this.createAxis("xAxis",a);
	this.swf.setHorizontalAxis(this.xAxis)
	},
setXAxes:function(c){
	var b;
	for(var a=0;a<c.length;a++){
		b=this.createAxis("xAxis"+a,c[a]);
		this.swf.setHorizontalAxis(b)
		}
	},
setYAxis:function(a){
	this.yAxis=this.createAxis("yAxis",a);
	this.swf.setVerticalAxis(this.yAxis)
	},
setYAxes:function(c){
	var b;
	for(var a=0;a<c.length;a++){
		b=this.createAxis("yAxis"+a,c[a]);
		this.swf.setVerticalAxis(b)
		}
	},
createAxis:function(b,d){
	var e=Ext.apply({},d),c,a;
	if(this[b]){
		a=this[b].labelFunction;
		this.removeFnProxy(a);
		this.labelFn.remove(a)
		}
		if(e.labelRenderer){
		c=this.getFunctionRef(e.labelRenderer);
		e.labelFunction=this.createFnProxy(function(g){
			return c.fn.call(c.scope,g)
			});
		delete e.labelRenderer;
		this.labelFn.push(e.labelFunction)
		}
		if(b.indexOf("xAxis")>-1&&e.position=="left"){
		e.position="bottom"
		}
		return e
	},
onDestroy:function(){
	Ext.chart.CartesianChart.superclass.onDestroy.call(this);
	Ext.each(this.labelFn,function(a){
		this.removeFnProxy(a)
		},this)
	}
});
Ext.reg("cartesianchart",Ext.chart.CartesianChart);
Ext.chart.LineChart=Ext.extend(Ext.chart.CartesianChart,{
	type:"line"
});
Ext.reg("linechart",Ext.chart.LineChart);
Ext.chart.ColumnChart=Ext.extend(Ext.chart.CartesianChart,{
	type:"column"
});
Ext.reg("columnchart",Ext.chart.ColumnChart);
Ext.chart.StackedColumnChart=Ext.extend(Ext.chart.CartesianChart,{
	type:"stackcolumn"
});
Ext.reg("stackedcolumnchart",Ext.chart.StackedColumnChart);
Ext.chart.BarChart=Ext.extend(Ext.chart.CartesianChart,{
	type:"bar"
});
Ext.reg("barchart",Ext.chart.BarChart);
Ext.chart.StackedBarChart=Ext.extend(Ext.chart.CartesianChart,{
	type:"stackbar"
});
Ext.reg("stackedbarchart",Ext.chart.StackedBarChart);
Ext.chart.Axis=function(a){
	Ext.apply(this,a)
	};

Ext.chart.Axis.prototype={
	type:null,
	orientation:"horizontal",
	reverse:false,
	labelFunction:null,
	hideOverlappingLabels:true,
	labelSpacing:2
};

Ext.chart.NumericAxis=Ext.extend(Ext.chart.Axis,{
	type:"numeric",
	minimum:NaN,
	maximum:NaN,
	majorUnit:NaN,
	minorUnit:NaN,
	snapToUnits:true,
	alwaysShowZero:true,
	scale:"linear",
	roundMajorUnit:true,
	calculateByLabelSize:true,
	position:"left",
	adjustMaximumByMajorUnit:true,
	adjustMinimumByMajorUnit:true
});
Ext.chart.TimeAxis=Ext.extend(Ext.chart.Axis,{
	type:"time",
	minimum:null,
	maximum:null,
	majorUnit:NaN,
	majorTimeUnit:null,
	minorUnit:NaN,
	minorTimeUnit:null,
	snapToUnits:true,
	stackingEnabled:false,
	calculateByLabelSize:true
});
Ext.chart.CategoryAxis=Ext.extend(Ext.chart.Axis,{
	type:"category",
	categoryNames:null,
	calculateCategoryCount:false
});
Ext.chart.Series=function(a){
	Ext.apply(this,a)
	};

Ext.chart.Series.prototype={
	type:null,
	displayName:null
};

Ext.chart.CartesianSeries=Ext.extend(Ext.chart.Series,{
	xField:null,
	yField:null,
	showInLegend:true,
	axis:"primary"
});
Ext.chart.ColumnSeries=Ext.extend(Ext.chart.CartesianSeries,{
	type:"column"
});
Ext.chart.LineSeries=Ext.extend(Ext.chart.CartesianSeries,{
	type:"line"
});
Ext.chart.BarSeries=Ext.extend(Ext.chart.CartesianSeries,{
	type:"bar"
});
Ext.chart.PieSeries=Ext.extend(Ext.chart.Series,{
	type:"pie",
	dataField:null,
	categoryField:null
});
Ext.menu.Menu=Ext.extend(Ext.Container,{
	minWidth:120,
	shadow:"sides",
	subMenuAlign:"tl-tr?",
	defaultAlign:"tl-bl?",
	allowOtherMenus:false,
	ignoreParentClicks:false,
	enableScrolling:true,
	maxHeight:null,
	scrollIncrement:24,
	showSeparator:true,
	defaultOffsets:[0,0],
	plain:false,
	floating:true,
	zIndex:15000,
	hidden:true,
	layout:"menu",
	hideMode:"offsets",
	scrollerHeight:8,
	autoLayout:true,
	defaultType:"menuitem",
	bufferResize:false,
	initComponent:function(){
		if(Ext.isArray(this.initialConfig)){
			Ext.apply(this,{
				items:this.initialConfig
				})
			}
			this.addEvents("click","mouseover","mouseout","itemclick");
		Ext.menu.MenuMgr.register(this);
		if(this.floating){
			Ext.EventManager.onWindowResize(this.hide,this)
			}else{
			if(this.initialConfig.hidden!==false){
				this.hidden=false
				}
				this.internalDefaults={
				hideOnClick:false
			}
		}
		Ext.menu.Menu.superclass.initComponent.call(this);
	if(this.autoLayout){
		var a=this.doLayout.createDelegate(this,[]);
		this.on({
			add:a,
			remove:a
		})
		}
	},
getLayoutTarget:function(){
	return this.ul
	},
onRender:function(b,a){
	if(!b){
		b=Ext.getBody()
		}
		var c={
		id:this.getId(),
		cls:"x-menu "+((this.floating)?"x-menu-floating x-layer ":"")+(this.cls||"")+(this.plain?" x-menu-plain":"")+(this.showSeparator?"":" x-menu-nosep"),
		style:this.style,
		cn:[{
			tag:"a",
			cls:"x-menu-focus",
			href:"#",
			onclick:"return false;",
			tabIndex:"-1"
		},{
			tag:"ul",
			cls:"x-menu-list"
		}]
		};

	if(this.floating){
		this.el=new Ext.Layer({
			shadow:this.shadow,
			dh:c,
			constrain:false,
			parentEl:b,
			zindex:this.zIndex
			})
		}else{
		this.el=b.createChild(c)
		}
		Ext.menu.Menu.superclass.onRender.call(this,b,a);
	if(!this.keyNav){
		this.keyNav=new Ext.menu.MenuNav(this)
		}
		this.focusEl=this.el.child("a.x-menu-focus");
	this.ul=this.el.child("ul.x-menu-list");
	this.mon(this.ul,{
		scope:this,
		click:this.onClick,
		mouseover:this.onMouseOver,
		mouseout:this.onMouseOut
		});
	if(this.enableScrolling){
		this.mon(this.el,{
			scope:this,
			delegate:".x-menu-scroller",
			click:this.onScroll,
			mouseover:this.deactivateActive
			})
		}
	},
findTargetItem:function(b){
	var a=b.getTarget(".x-menu-list-item",this.ul,true);
	if(a&&a.menuItemId){
		return this.items.get(a.menuItemId)
		}
	},
onClick:function(b){
	var a=this.findTargetItem(b);
	if(a){
		if(a.isFormField){
			this.setActiveItem(a)
			}else{
			if(a instanceof Ext.menu.BaseItem){
				if(a.menu&&this.ignoreParentClicks){
					a.expandMenu();
					b.preventDefault()
					}else{
					if(a.onClick){
						a.onClick(b);
						this.fireEvent("click",this,a,b)
						}
					}
			}
	}
}
},
setActiveItem:function(a,b){
	if(a!=this.activeItem){
		this.deactivateActive();
		if((this.activeItem=a).isFormField){
			a.focus()
			}else{
			a.activate(b)
			}
		}else{
	if(b){
		a.expandMenu()
		}
	}
},
deactivateActive:function(){
	var b=this.activeItem;
	if(b){
		if(b.isFormField){
			if(b.collapse){
				b.collapse()
				}
			}else{
		b.deactivate()
		}
		delete this.activeItem
	}
},
tryActivate:function(g,e){
	var b=this.items;
	for(var c=g,a=b.length;c>=0&&c<a;c+=e){
		var d=b.get(c);
		if(d.isVisible()&&!d.disabled&&(d.canActivate||d.isFormField)){
			this.setActiveItem(d,false);
			return d
			}
		}
	return false
},
onMouseOver:function(b){
	var a=this.findTargetItem(b);
	if(a){
		if(a.canActivate&&!a.disabled){
			this.setActiveItem(a,true)
			}
		}
	this.over=true;
this.fireEvent("mouseover",this,b,a)
},
onMouseOut:function(b){
	var a=this.findTargetItem(b);
	if(a){
		if(a==this.activeItem&&a.shouldDeactivate&&a.shouldDeactivate(b)){
			this.activeItem.deactivate();
			delete this.activeItem
			}
		}
	this.over=false;
this.fireEvent("mouseout",this,b,a)
},
onScroll:function(d,b){
	if(d){
		d.stopEvent()
		}
		var a=this.ul.dom,c=Ext.fly(b).is(".x-menu-scroller-top");
	a.scrollTop+=this.scrollIncrement*(c?-1:1);
	if(c?a.scrollTop<=0:a.scrollTop+this.activeMax>=a.scrollHeight){
		this.onScrollerOut(null,b)
		}
	},
onScrollerIn:function(d,b){
	var a=this.ul.dom,c=Ext.fly(b).is(".x-menu-scroller-top");
	if(c?a.scrollTop>0:a.scrollTop+this.activeMax<a.scrollHeight){
		Ext.fly(b).addClass(["x-menu-item-active","x-menu-scroller-active"])
		}
	},
onScrollerOut:function(b,a){
	Ext.fly(a).removeClass(["x-menu-item-active","x-menu-scroller-active"])
	},
show:function(b,c,a){
	if(this.floating){
		this.parentMenu=a;
		if(!this.el){
			this.render();
			this.doLayout(false,true)
			}
			this.showAt(this.el.getAlignToXY(b,c||this.defaultAlign,this.defaultOffsets),a)
		}else{
		Ext.menu.Menu.superclass.show.call(this)
		}
	},
showAt:function(b,a){
	if(this.fireEvent("beforeshow",this)!==false){
		this.parentMenu=a;
		if(!this.el){
			this.render()
			}
			if(this.enableScrolling){
			this.el.setXY(b);
			b[1]=this.constrainScroll(b[1]);
			b=[this.el.adjustForConstraints(b)[0],b[1]]
			}else{
			b=this.el.adjustForConstraints(b)
			}
			this.el.setXY(b);
		this.el.show();
		Ext.menu.Menu.superclass.onShow.call(this);
		if(Ext.isIE){
			this.fireEvent("autosize",this);
			if(!Ext.isIE8){
				this.el.repaint()
				}
			}
		this.hidden=false;
	this.focus();
	this.fireEvent("show",this)
	}
},
constrainScroll:function(i){
	var b,d=this.ul.setHeight("auto").getHeight(),a=i,h,e,g,c;
	if(this.floating){
		e=Ext.fly(this.el.dom.parentNode);
		g=e.getScroll().top;
		c=e.getViewSize().height;
		h=i-g;
		b=this.maxHeight?this.maxHeight:c-h;
		if(d>c){
			b=c;
			a=i-h
			}else{
			if(b<d){
				a=i-(d-b);
				b=d
				}
			}
	}else{
	b=this.getHeight()
	}
	if(this.maxHeight){
	b=Math.min(this.maxHeight,b)
	}
	if(d>b&&b>0){
	this.activeMax=b-this.scrollerHeight*2-this.el.getFrameWidth("tb")-Ext.num(this.el.shadowOffset,0);
	this.ul.setHeight(this.activeMax);
	this.createScrollers();
	this.el.select(".x-menu-scroller").setDisplayed("")
	}else{
	this.ul.setHeight(d);
	this.el.select(".x-menu-scroller").setDisplayed("none")
	}
	this.ul.dom.scrollTop=0;
return a
},
createScrollers:function(){
	if(!this.scroller){
		this.scroller={
			pos:0,
			top:this.el.insertFirst({
				tag:"div",
				cls:"x-menu-scroller x-menu-scroller-top",
				html:"&#160;"
			}),
			bottom:this.el.createChild({
				tag:"div",
				cls:"x-menu-scroller x-menu-scroller-bottom",
				html:"&#160;"
			})
			};

		this.scroller.top.hover(this.onScrollerIn,this.onScrollerOut,this);
		this.scroller.topRepeater=new Ext.util.ClickRepeater(this.scroller.top,{
			listeners:{
				click:this.onScroll.createDelegate(this,[null,this.scroller.top],false)
				}
			});
	this.scroller.bottom.hover(this.onScrollerIn,this.onScrollerOut,this);
	this.scroller.bottomRepeater=new Ext.util.ClickRepeater(this.scroller.bottom,{
		listeners:{
			click:this.onScroll.createDelegate(this,[null,this.scroller.bottom],false)
			}
		})
}
},
onLayout:function(){
	if(this.isVisible()){
		if(this.enableScrolling){
			this.constrainScroll(this.el.getTop())
			}
			if(this.floating){
			this.el.sync()
			}
		}
},
focus:function(){
	if(!this.hidden){
		this.doFocus.defer(50,this)
		}
	},
doFocus:function(){
	if(!this.hidden){
		this.focusEl.focus()
		}
	},
hide:function(a){
	if(!this.isDestroyed){
		this.deepHide=a;
		Ext.menu.Menu.superclass.hide.call(this);
		delete this.deepHide
		}
	},
onHide:function(){
	Ext.menu.Menu.superclass.onHide.call(this);
	this.deactivateActive();
	if(this.el&&this.floating){
		this.el.hide()
		}
		var a=this.parentMenu;
	if(this.deepHide===true&&a){
		if(a.floating){
			a.hide(true)
			}else{
			a.deactivateActive()
			}
		}
},
lookupComponent:function(a){
	if(Ext.isString(a)){
		a=(a=="separator"||a=="-")?new Ext.menu.Separator():new Ext.menu.TextItem(a);
		this.applyDefaults(a)
		}else{
		if(Ext.isObject(a)){
			a=this.getMenuItem(a)
			}else{
			if(a.tagName||a.el){
				a=new Ext.BoxComponent({
					el:a
				})
				}
			}
	}
return a
},
applyDefaults:function(b){
	if(!Ext.isString(b)){
		b=Ext.menu.Menu.superclass.applyDefaults.call(this,b);
		var a=this.internalDefaults;
		if(a){
			if(b.events){
				Ext.applyIf(b.initialConfig,a);
				Ext.apply(b,a)
				}else{
				Ext.applyIf(b,a)
				}
			}
	}
return b
},
getMenuItem:function(a){
	if(!a.isXType){
		if(!a.xtype&&Ext.isBoolean(a.checked)){
			return new Ext.menu.CheckItem(a)
			}
			return Ext.create(a,this.defaultType)
		}
		return a
	},
addSeparator:function(){
	return this.add(new Ext.menu.Separator())
	},
addElement:function(a){
	return this.add(new Ext.menu.BaseItem({
		el:a
	}))
	},
addItem:function(a){
	return this.add(a)
	},
addMenuItem:function(a){
	return this.add(this.getMenuItem(a))
	},
addText:function(a){
	return this.add(new Ext.menu.TextItem(a))
	},
onDestroy:function(){
	Ext.EventManager.removeResizeListener(this.hide,this);
	var a=this.parentMenu;
	if(a&&a.activeChild==this){
		delete a.activeChild
		}
		delete this.parentMenu;
	Ext.menu.Menu.superclass.onDestroy.call(this);
	Ext.menu.MenuMgr.unregister(this);
	if(this.keyNav){
		this.keyNav.disable()
		}
		var b=this.scroller;
	if(b){
		Ext.destroy(b.topRepeater,b.bottomRepeater,b.top,b.bottom)
		}
		Ext.destroy(this.el,this.focusEl,this.ul)
	}
});
Ext.reg("menu",Ext.menu.Menu);
Ext.menu.MenuNav=Ext.extend(Ext.KeyNav,function(){
	function a(d,c){
		if(!c.tryActivate(c.items.indexOf(c.activeItem)-1,-1)){
			c.tryActivate(c.items.length-1,-1)
			}
		}
	function b(d,c){
	if(!c.tryActivate(c.items.indexOf(c.activeItem)+1,1)){
		c.tryActivate(0,1)
		}
	}
return{
	constructor:function(c){
		Ext.menu.MenuNav.superclass.constructor.call(this,c.el);
		this.scope=this.menu=c
		},
	doRelay:function(g,d){
		var c=g.getKey();
		if(this.menu.activeItem&&this.menu.activeItem.isFormField&&c!=g.TAB){
			return false
			}
			if(!this.menu.activeItem&&g.isNavKeyPress()&&c!=g.SPACE&&c!=g.RETURN){
			this.menu.tryActivate(0,1);
			return false
			}
			return d.call(this.scope||this,g,this.menu)
		},
	tab:function(d,c){
		d.stopEvent();
		if(d.shiftKey){
			a(d,c)
			}else{
			b(d,c)
			}
		},
up:a,
down:b,
right:function(d,c){
	if(c.activeItem){
		c.activeItem.expandMenu(true)
		}
	},
left:function(d,c){
	c.hide();
	if(c.parentMenu&&c.parentMenu.activeItem){
		c.parentMenu.activeItem.activate()
		}
	},
enter:function(d,c){
	if(c.activeItem){
		d.stopPropagation();
		c.activeItem.onClick(d);
		c.fireEvent("click",this,c.activeItem);
		return true
		}
	}
}
}());
Ext.menu.MenuMgr=function(){
	var g,d,c={},a=false,l=new Date();
	function n(){
		g={};

		d=new Ext.util.MixedCollection();
		Ext.getDoc().addKeyListener(27,function(){
			if(d.length>0){
				i()
				}
			})
	}
	function i(){
	if(d&&d.length>0){
		var o=d.clone();
		o.each(function(p){
			p.hide()
			});
		return true
		}
		return false
	}
	function e(o){
	d.remove(o);
	if(d.length<1){
		Ext.getDoc().un("mousedown",m);
		a=false
		}
	}
function k(o){
	var p=d.last();
	l=new Date();
	d.add(o);
	if(!a){
		Ext.getDoc().on("mousedown",m);
		a=true
		}
		if(o.parentMenu){
		o.getEl().setZIndex(parseInt(o.parentMenu.getEl().getStyle("z-index"),10)+3);
		o.parentMenu.activeChild=o
		}else{
		if(p&&!p.isDestroyed&&p.isVisible()){
			o.getEl().setZIndex(parseInt(p.getEl().getStyle("z-index"),10)+3)
			}
		}
}
function b(o){
	if(o.activeChild){
		o.activeChild.hide()
		}
		if(o.autoHideTimer){
		clearTimeout(o.autoHideTimer);
		delete o.autoHideTimer
		}
	}
function h(o){
	var p=o.parentMenu;
	if(!p&&!o.allowOtherMenus){
		i()
		}else{
		if(p&&p.activeChild){
			p.activeChild.hide()
			}
		}
}
function m(o){
	if(l.getElapsed()>50&&d.length>0&&!o.getTarget(".x-menu")){
		i()
		}
	}
return{
	hideAll:function(){
		return i()
		},
	register:function(o){
		if(!g){
			n()
			}
			g[o.id]=o;
		o.on({
			beforehide:b,
			hide:e,
			beforeshow:h,
			show:k
		})
		},
	get:function(o){
		if(typeof o=="string"){
			if(!g){
				return null
				}
				return g[o]
			}else{
			if(o.events){
				return o
				}else{
				if(typeof o.length=="number"){
					return new Ext.menu.Menu({
						items:o
					})
					}else{
					return Ext.create(o,"menu")
					}
				}
		}
},
unregister:function(o){
	delete g[o.id];
	o.un("beforehide",b);
	o.un("hide",e);
	o.un("beforeshow",h);
	o.un("show",k)
	},
registerCheckable:function(o){
	var p=o.group;
	if(p){
		if(!c[p]){
			c[p]=[]
			}
			c[p].push(o)
		}
	},
unregisterCheckable:function(o){
	var p=o.group;
	if(p){
		c[p].remove(o)
		}
	},
onCheckChange:function(q,r){
	if(q.group&&r){
		var t=c[q.group],p=0,o=t.length,s;
		for(;p<o;p++){
			s=t[p];
			if(s!=q){
				s.setChecked(false)
				}
			}
		}
},
getCheckedItem:function(q){
	var r=c[q];
	if(r){
		for(var p=0,o=r.length;p<o;p++){
			if(r[p].checked){
				return r[p]
				}
			}
		}
	return null
},
setCheckedItem:function(q,s){
	var r=c[q];
	if(r){
		for(var p=0,o=r.length;p<o;p++){
			if(r[p].id==s){
				r[p].setChecked(true)
				}
			}
		}
	return null
}
}
}();
Ext.menu.BaseItem=Ext.extend(Ext.Component,{
	canActivate:false,
	activeClass:"x-menu-item-active",
	hideOnClick:true,
	clickHideDelay:1,
	ctype:"Ext.menu.BaseItem",
	actionMode:"container",
	initComponent:function(){
		Ext.menu.BaseItem.superclass.initComponent.call(this);
		this.addEvents("click","activate","deactivate");
		if(this.handler){
			this.on("click",this.handler,this.scope)
			}
		},
onRender:function(b,a){
	Ext.menu.BaseItem.superclass.onRender.apply(this,arguments);
	if(this.ownerCt&&this.ownerCt instanceof Ext.menu.Menu){
		this.parentMenu=this.ownerCt
		}else{
		this.container.addClass("x-menu-list-item");
		this.mon(this.el,{
			scope:this,
			click:this.onClick,
			mouseenter:this.activate,
			mouseleave:this.deactivate
			})
		}
	},
setHandler:function(b,a){
	if(this.handler){
		this.un("click",this.handler,this.scope)
		}
		this.on("click",this.handler=b,this.scope=a)
	},
onClick:function(a){
	if(!this.disabled&&this.fireEvent("click",this,a)!==false&&(this.parentMenu&&this.parentMenu.fireEvent("itemclick",this,a)!==false)){
		this.handleClick(a)
		}else{
		a.stopEvent()
		}
	},
activate:function(){
	if(this.disabled){
		return false
		}
		var a=this.container;
	a.addClass(this.activeClass);
	this.region=a.getRegion().adjust(2,2,-2,-2);
	this.fireEvent("activate",this);
	return true
	},
deactivate:function(){
	this.container.removeClass(this.activeClass);
	this.fireEvent("deactivate",this)
	},
shouldDeactivate:function(a){
	return !this.region||!this.region.contains(a.getPoint())
	},
handleClick:function(b){
	var a=this.parentMenu;
	if(this.hideOnClick){
		if(a.floating){
			a.hide.defer(this.clickHideDelay,a,[true])
			}else{
			a.deactivateActive()
			}
		}
},
expandMenu:Ext.emptyFn,
hideMenu:Ext.emptyFn
});
Ext.reg("menubaseitem",Ext.menu.BaseItem);
Ext.menu.TextItem=Ext.extend(Ext.menu.BaseItem,{
	hideOnClick:false,
	itemCls:"x-menu-text",
	constructor:function(a){
		if(typeof a=="string"){
			a={
				text:a
			}
		}
		Ext.menu.TextItem.superclass.constructor.call(this,a)
	},
onRender:function(){
	var a=document.createElement("span");
	a.className=this.itemCls;
	a.innerHTML=this.text;
	this.el=a;
	Ext.menu.TextItem.superclass.onRender.apply(this,arguments)
	}
});
Ext.reg("menutextitem",Ext.menu.TextItem);
Ext.menu.Separator=Ext.extend(Ext.menu.BaseItem,{
	itemCls:"x-menu-sep",
	hideOnClick:false,
	activeClass:"",
	onRender:function(a){
		var b=document.createElement("span");
		b.className=this.itemCls;
		b.innerHTML="&#160;";
		this.el=b;
		a.addClass("x-menu-sep-li");
		Ext.menu.Separator.superclass.onRender.apply(this,arguments)
		}
	});
Ext.reg("menuseparator",Ext.menu.Separator);
Ext.menu.Item=Ext.extend(Ext.menu.BaseItem,{
	itemCls:"x-menu-item",
	canActivate:true,
	showDelay:200,
	altText:"",
	hideDelay:200,
	ctype:"Ext.menu.Item",
	initComponent:function(){
		Ext.menu.Item.superclass.initComponent.call(this);
		if(this.menu){
			this.menu=Ext.menu.MenuMgr.get(this.menu);
			this.menu.ownerCt=this
			}
		},
onRender:function(d,b){
	if(!this.itemTpl){
		this.itemTpl=Ext.menu.Item.prototype.itemTpl=new Ext.XTemplate('<a id="{id}" class="{cls}" hidefocus="true" unselectable="on" href="{href}"','<tpl if="hrefTarget">',' target="{hrefTarget}"',"</tpl>",">",'<img alt="{altText}" src="{icon}" class="x-menu-item-icon {iconCls}"/>','<span class="x-menu-item-text">{text}</span>',"</a>")
		}
		var c=this.getTemplateArgs();
	this.el=b?this.itemTpl.insertBefore(b,c,true):this.itemTpl.append(d,c,true);
	this.iconEl=this.el.child("img.x-menu-item-icon");
	this.textEl=this.el.child(".x-menu-item-text");
	if(!this.href){
		this.mon(this.el,"click",Ext.emptyFn,null,{
			preventDefault:true
		})
		}
		Ext.menu.Item.superclass.onRender.call(this,d,b)
	},
getTemplateArgs:function(){
	return{
		id:this.id,
		cls:this.itemCls+(this.menu?" x-menu-item-arrow":"")+(this.cls?" "+this.cls:""),
		href:this.href||"#",
		hrefTarget:this.hrefTarget,
		icon:this.icon||Ext.BLANK_IMAGE_URL,
		iconCls:this.iconCls||"",
		text:this.itemText||this.text||"&#160;",
		altText:this.altText||""
		}
	},
setText:function(a){
	this.text=a||"&#160;";
	if(this.rendered){
		this.textEl.update(this.text);
		this.parentMenu.layout.doAutoSize()
		}
	},
setIconClass:function(a){
	var b=this.iconCls;
	this.iconCls=a;
	if(this.rendered){
		this.iconEl.replaceClass(b,this.iconCls)
		}
	},
beforeDestroy:function(){
	if(this.menu){
		delete this.menu.ownerCt;
		this.menu.destroy()
		}
		Ext.menu.Item.superclass.beforeDestroy.call(this)
	},
handleClick:function(a){
	if(!this.href){
		a.stopEvent()
		}
		Ext.menu.Item.superclass.handleClick.apply(this,arguments)
	},
activate:function(a){
	if(Ext.menu.Item.superclass.activate.apply(this,arguments)){
		this.focus();
		if(a){
			this.expandMenu()
			}
		}
	return true
},
shouldDeactivate:function(a){
	if(Ext.menu.Item.superclass.shouldDeactivate.call(this,a)){
		if(this.menu&&this.menu.isVisible()){
			return !this.menu.getEl().getRegion().contains(a.getPoint())
			}
			return true
		}
		return false
	},
deactivate:function(){
	Ext.menu.Item.superclass.deactivate.apply(this,arguments);
	this.hideMenu()
	},
expandMenu:function(a){
	if(!this.disabled&&this.menu){
		clearTimeout(this.hideTimer);
		delete this.hideTimer;
		if(!this.menu.isVisible()&&!this.showTimer){
			this.showTimer=this.deferExpand.defer(this.showDelay,this,[a])
			}else{
			if(this.menu.isVisible()&&a){
				this.menu.tryActivate(0,1)
				}
			}
	}
},
deferExpand:function(a){
	delete this.showTimer;
	this.menu.show(this.container,this.parentMenu.subMenuAlign||"tl-tr?",this.parentMenu);
	if(a){
		this.menu.tryActivate(0,1)
		}
	},
hideMenu:function(){
	clearTimeout(this.showTimer);
	delete this.showTimer;
	if(!this.hideTimer&&this.menu&&this.menu.isVisible()){
		this.hideTimer=this.deferHide.defer(this.hideDelay,this)
		}
	},
deferHide:function(){
	delete this.hideTimer;
	if(this.menu.over){
		this.parentMenu.setActiveItem(this,false)
		}else{
		this.menu.hide()
		}
	}
});
Ext.reg("menuitem",Ext.menu.Item);
Ext.menu.CheckItem=Ext.extend(Ext.menu.Item,{
	itemCls:"x-menu-item x-menu-check-item",
	groupClass:"x-menu-group-item",
	checked:false,
	ctype:"Ext.menu.CheckItem",
	initComponent:function(){
		Ext.menu.CheckItem.superclass.initComponent.call(this);
		this.addEvents("beforecheckchange","checkchange");
		if(this.checkHandler){
			this.on("checkchange",this.checkHandler,this.scope)
			}
			Ext.menu.MenuMgr.registerCheckable(this)
		},
	onRender:function(a){
		Ext.menu.CheckItem.superclass.onRender.apply(this,arguments);
		if(this.group){
			this.el.addClass(this.groupClass)
			}
			if(this.checked){
			this.checked=false;
			this.setChecked(true,true)
			}
		},
destroy:function(){
	Ext.menu.MenuMgr.unregisterCheckable(this);
	Ext.menu.CheckItem.superclass.destroy.apply(this,arguments)
	},
setChecked:function(b,a){
	var c=a===true;
	if(this.checked!=b&&(c||this.fireEvent("beforecheckchange",this,b)!==false)){
		Ext.menu.MenuMgr.onCheckChange(this,b);
		if(this.container){
			this.container[b?"addClass":"removeClass"]("x-menu-item-checked")
			}
			this.checked=b;
		if(!c){
			this.fireEvent("checkchange",this,b)
			}
		}
},
handleClick:function(a){
	if(!this.disabled&&!(this.checked&&this.group)){
		this.setChecked(!this.checked)
		}
		Ext.menu.CheckItem.superclass.handleClick.apply(this,arguments)
	}
});
Ext.reg("menucheckitem",Ext.menu.CheckItem);
Ext.menu.DateMenu=Ext.extend(Ext.menu.Menu,{
	enableScrolling:false,
	hideOnClick:true,
	pickerId:null,
	cls:"x-date-menu",
	initComponent:function(){
		this.on("beforeshow",this.onBeforeShow,this);
		if(this.strict=(Ext.isIE7&&Ext.isStrict)){
			this.on("show",this.onShow,this,{
				single:true,
				delay:20
			})
			}
			Ext.apply(this,{
			plain:true,
			showSeparator:false,
			items:this.picker=new Ext.DatePicker(Ext.applyIf({
				internalRender:this.strict||!Ext.isIE,
				ctCls:"x-menu-date-item",
				id:this.pickerId
				},this.initialConfig))
			});
		this.picker.purgeListeners();
		Ext.menu.DateMenu.superclass.initComponent.call(this);
		this.relayEvents(this.picker,["select"]);
		this.on("show",this.picker.focus,this.picker);
		this.on("select",this.menuHide,this);
		if(this.handler){
			this.on("select",this.handler,this.scope||this)
			}
		},
menuHide:function(){
	if(this.hideOnClick){
		this.hide(true)
		}
	},
onBeforeShow:function(){
	if(this.picker){
		this.picker.hideMonthPicker(true)
		}
	},
onShow:function(){
	var a=this.picker.getEl();
	a.setWidth(a.getWidth())
	}
});
Ext.reg("datemenu",Ext.menu.DateMenu);
Ext.menu.ColorMenu=Ext.extend(Ext.menu.Menu,{
	enableScrolling:false,
	hideOnClick:true,
	cls:"x-color-menu",
	paletteId:null,
	initComponent:function(){
		Ext.apply(this,{
			plain:true,
			showSeparator:false,
			items:this.palette=new Ext.ColorPalette(Ext.applyIf({
				id:this.paletteId
				},this.initialConfig))
			});
		this.palette.purgeListeners();
		Ext.menu.ColorMenu.superclass.initComponent.call(this);
		this.relayEvents(this.palette,["select"]);
		this.on("select",this.menuHide,this);
		if(this.handler){
			this.on("select",this.handler,this.scope||this)
			}
		},
menuHide:function(){
	if(this.hideOnClick){
		this.hide(true)
		}
	}
});
Ext.reg("colormenu",Ext.menu.ColorMenu);
Ext.form.Field=Ext.extend(Ext.BoxComponent,{
	invalidClass:"x-form-invalid",
	invalidText:"The value in this field is invalid",
	focusClass:"x-form-focus",
	validationEvent:"keyup",
	validateOnBlur:true,
	validationDelay:250,
	defaultAutoCreate:{
		tag:"input",
		type:"text",
		size:"20",
		autocomplete:"off"
	},
	fieldClass:"x-form-field",
	msgTarget:"qtip",
	msgFx:"normal",
	readOnly:false,
	disabled:false,
	submitValue:true,
	isFormField:true,
	msgDisplay:"",
	hasFocus:false,
	initComponent:function(){
		Ext.form.Field.superclass.initComponent.call(this);
		this.addEvents("focus","blur","specialkey","change","invalid","valid")
		},
	getName:function(){
		return this.rendered&&this.el.dom.name?this.el.dom.name:this.name||this.id||""
		},
	onRender:function(c,a){
		if(!this.el){
			var b=this.getAutoCreate();
			if(!b.name){
				b.name=this.name||this.id
				}
				if(this.inputType){
				b.type=this.inputType
				}
				this.autoEl=b
			}
			Ext.form.Field.superclass.onRender.call(this,c,a);
		if(this.submitValue===false){
			this.el.dom.removeAttribute("name")
			}
			var d=this.el.dom.type;
		if(d){
			if(d=="password"){
				d="text"
				}
				this.el.addClass("x-form-"+d)
			}
			if(this.readOnly){
			this.setReadOnly(true)
			}
			if(this.tabIndex!==undefined){
			this.el.dom.setAttribute("tabIndex",this.tabIndex)
			}
			this.el.addClass([this.fieldClass,this.cls])
		},
	getItemCt:function(){
		return this.itemCt
		},
	initValue:function(){
		if(this.value!==undefined){
			this.setValue(this.value)
			}else{
			if(!Ext.isEmpty(this.el.dom.value)&&this.el.dom.value!=this.emptyText){
				this.setValue(this.el.dom.value)
				}
			}
		this.originalValue=this.getValue()
	},
isDirty:function(){
	if(this.disabled||!this.rendered){
		return false
		}
		return String(this.getValue())!==String(this.originalValue)
	},
setReadOnly:function(a){
	if(this.rendered){
		this.el.dom.readOnly=a
		}
		this.readOnly=a
	},
afterRender:function(){
	Ext.form.Field.superclass.afterRender.call(this);
	this.initEvents();
	this.initValue()
	},
fireKey:function(a){
	if(a.isSpecialKey()){
		this.fireEvent("specialkey",this,a)
		}
	},
reset:function(){
	this.setValue(this.originalValue);
	this.clearInvalid()
	},
initEvents:function(){
	this.mon(this.el,Ext.EventManager.getKeyEvent(),this.fireKey,this);
	this.mon(this.el,"focus",this.onFocus,this);
	this.mon(this.el,"blur",this.onBlur,this,this.inEditor?{
		buffer:10
	}:null)
	},
preFocus:Ext.emptyFn,
onFocus:function(){
	this.preFocus();
	if(this.focusClass){
		this.el.addClass(this.focusClass)
		}
		if(!this.hasFocus){
		this.hasFocus=true;
		this.startValue=this.getValue();
		this.fireEvent("focus",this)
		}
	},
beforeBlur:Ext.emptyFn,
onBlur:function(){
	this.beforeBlur();
	if(this.focusClass){
		this.el.removeClass(this.focusClass)
		}
		this.hasFocus=false;
	if(this.validationEvent!==false&&(this.validateOnBlur||this.validationEvent=="blur")){
		this.validate()
		}
		var a=this.getValue();
	if(String(a)!==String(this.startValue)){
		this.fireEvent("change",this,a,this.startValue)
		}
		this.fireEvent("blur",this);
	this.postBlur()
	},
postBlur:Ext.emptyFn,
isValid:function(a){
	if(this.disabled){
		return true
		}
		var c=this.preventMark;
	this.preventMark=a===true;
	var b=this.validateValue(this.processValue(this.getRawValue()));
	this.preventMark=c;
	return b
	},
validate:function(){
	if(this.disabled||this.validateValue(this.processValue(this.getRawValue()))){
		this.clearInvalid();
		return true
		}
		return false
	},
processValue:function(a){
	return a
	},
validateValue:function(b){
	var a=this.getErrors(b)[0];
	if(a==undefined){
		return true
		}else{
		this.markInvalid(a);
		return false
		}
	},
getErrors:function(){
	return[]
	},
getActiveError:function(){
	return this.activeError||""
	},
markInvalid:function(c){
	if(this.rendered&&!this.preventMark){
		c=c||this.invalidText;
		var a=this.getMessageHandler();
		if(a){
			a.mark(this,c)
			}else{
			if(this.msgTarget){
				this.el.addClass(this.invalidClass);
				var b=Ext.getDom(this.msgTarget);
				if(b){
					b.innerHTML=c;
					b.style.display=this.msgDisplay
					}
				}
		}
}
this.setActiveError(c)
},
clearInvalid:function(){
	if(this.rendered&&!this.preventMark){
		this.el.removeClass(this.invalidClass);
		var a=this.getMessageHandler();
		if(a){
			a.clear(this)
			}else{
			if(this.msgTarget){
				this.el.removeClass(this.invalidClass);
				var b=Ext.getDom(this.msgTarget);
				if(b){
					b.innerHTML="";
					b.style.display="none"
					}
				}
		}
}
this.unsetActiveError()
},
setActiveError:function(b,a){
	this.activeError=b;
	if(a!==true){
		this.fireEvent("invalid",this,b)
		}
	},
unsetActiveError:function(a){
	delete this.activeError;
	if(a!==true){
		this.fireEvent("valid",this)
		}
	},
getMessageHandler:function(){
	return Ext.form.MessageTargets[this.msgTarget]
	},
getErrorCt:function(){
	return this.el.findParent(".x-form-element",5,true)||this.el.findParent(".x-form-field-wrap",5,true)
	},
alignErrorEl:function(){
	this.errorEl.setWidth(this.getErrorCt().getWidth(true)-20)
	},
alignErrorIcon:function(){
	this.errorIcon.alignTo(this.el,"tl-tr",[2,0])
	},
getRawValue:function(){
	var a=this.rendered?this.el.getValue():Ext.value(this.value,"");
	if(a===this.emptyText){
		a=""
		}
		return a
	},
getValue:function(){
	if(!this.rendered){
		return this.value
		}
		var a=this.el.getValue();
	if(a===this.emptyText||a===undefined){
		a=""
		}
		return a
	},
setRawValue:function(a){
	return this.rendered?(this.el.dom.value=(Ext.isEmpty(a)?"":a)):""
	},
setValue:function(a){
	this.value=a;
	if(this.rendered){
		this.el.dom.value=(Ext.isEmpty(a)?"":a);
		this.validate()
		}
		return this
	},
append:function(a){
	this.setValue([this.getValue(),a].join(""))
	}
});
Ext.form.MessageTargets={
	qtip:{
		mark:function(a,b){
			a.el.addClass(a.invalidClass);
			a.el.dom.qtip=b;
			a.el.dom.qclass="x-form-invalid-tip";
			if(Ext.QuickTips){
				Ext.QuickTips.enable()
				}
			},
	clear:function(a){
		a.el.removeClass(a.invalidClass);
		a.el.dom.qtip=""
		}
	},
title:{
	mark:function(a,b){
		a.el.addClass(a.invalidClass);
		a.el.dom.title=b
		},
	clear:function(a){
		a.el.dom.title=""
		}
	},
under:{
	mark:function(b,c){
		b.el.addClass(b.invalidClass);
		if(!b.errorEl){
			var a=b.getErrorCt();
			if(!a){
				b.el.dom.title=c;
				return
			}
			b.errorEl=a.createChild({
				cls:"x-form-invalid-msg"
			});
			b.on("resize",b.alignErrorEl,b);
			b.on("destroy",function(){
				Ext.destroy(this.errorEl)
				},b)
			}
			b.alignErrorEl();
		b.errorEl.update(c);
		Ext.form.Field.msgFx[b.msgFx].show(b.errorEl,b)
		},
	clear:function(a){
		a.el.removeClass(a.invalidClass);
		if(a.errorEl){
			Ext.form.Field.msgFx[a.msgFx].hide(a.errorEl,a)
			}else{
			a.el.dom.title=""
			}
		}
},
side:{
	mark:function(b,c){
		b.el.addClass(b.invalidClass);
		if(!b.errorIcon){
			var a=b.getErrorCt();
			if(!a){
				b.el.dom.title=c;
				return
			}
			b.errorIcon=a.createChild({
				cls:"x-form-invalid-icon"
			});
			if(b.ownerCt){
				b.ownerCt.on("afterlayout",b.alignErrorIcon,b);
				b.ownerCt.on("expand",b.alignErrorIcon,b)
				}
				b.on("resize",b.alignErrorIcon,b);
			b.on("destroy",function(){
				Ext.destroy(this.errorIcon)
				},b)
			}
			b.alignErrorIcon();
		b.errorIcon.dom.qtip=c;
		b.errorIcon.dom.qclass="x-form-invalid-tip";
		b.errorIcon.show()
		},
	clear:function(a){
		a.el.removeClass(a.invalidClass);
		if(a.errorIcon){
			a.errorIcon.dom.qtip="";
			a.errorIcon.hide()
			}else{
			a.el.dom.title=""
			}
		}
}
};

Ext.form.Field.msgFx={
	normal:{
		show:function(a,b){
			a.setDisplayed("block")
			},
		hide:function(a,b){
			a.setDisplayed(false).update("")
			}
		},
slide:{
	show:function(a,b){
		a.slideIn("t",{
			stopFx:true
		})
		},
	hide:function(a,b){
		a.slideOut("t",{
			stopFx:true,
			useDisplay:true
		})
		}
	},
slideRight:{
	show:function(a,b){
		a.fixDisplay();
		a.alignTo(b.el,"tl-tr");
		a.slideIn("l",{
			stopFx:true
		})
		},
	hide:function(a,b){
		a.slideOut("l",{
			stopFx:true,
			useDisplay:true
		})
		}
	}
};

Ext.reg("field",Ext.form.Field);
Ext.form.TextField=Ext.extend(Ext.form.Field,{
	grow:false,
	growMin:30,
	growMax:800,
	vtype:null,
	maskRe:null,
	disableKeyFilter:false,
	allowBlank:true,
	minLength:0,
	maxLength:Number.MAX_VALUE,
	minLengthText:"The minimum length for this field is {0}",
	maxLengthText:"The maximum length for this field is {0}",
	selectOnFocus:false,
	blankText:"This field is required",
	validator:null,
	regex:null,
	regexText:"",
	emptyText:null,
	emptyClass:"x-form-empty-field",
	initComponent:function(){
		Ext.form.TextField.superclass.initComponent.call(this);
		this.addEvents("autosize","keydown","keyup","keypress")
		},
	initEvents:function(){
		Ext.form.TextField.superclass.initEvents.call(this);
		if(this.validationEvent=="keyup"){
			this.validationTask=new Ext.util.DelayedTask(this.validate,this);
			this.mon(this.el,"keyup",this.filterValidation,this)
			}else{
			if(this.validationEvent!==false&&this.validationEvent!="blur"){
				this.mon(this.el,this.validationEvent,this.validate,this,{
					buffer:this.validationDelay
					})
				}
			}
		if(this.selectOnFocus||this.emptyText){
		this.mon(this.el,"mousedown",this.onMouseDown,this);
		if(this.emptyText){
			this.applyEmptyText()
			}
		}
	if(this.maskRe||(this.vtype&&this.disableKeyFilter!==true&&(this.maskRe=Ext.form.VTypes[this.vtype+"Mask"]))){
	this.mon(this.el,"keypress",this.filterKeys,this)
	}
	if(this.grow){
	this.mon(this.el,"keyup",this.onKeyUpBuffered,this,{
		buffer:50
	});
	this.mon(this.el,"click",this.autoSize,this)
	}
	if(this.enableKeyEvents){
	this.mon(this.el,{
		scope:this,
		keyup:this.onKeyUp,
		keydown:this.onKeyDown,
		keypress:this.onKeyPress
		})
	}
},
onMouseDown:function(a){
	if(!this.hasFocus){
		this.mon(this.el,"mouseup",Ext.emptyFn,this,{
			single:true,
			preventDefault:true
		})
		}
	},
processValue:function(a){
	if(this.stripCharsRe){
		var b=a.replace(this.stripCharsRe,"");
		if(b!==a){
			this.setRawValue(b);
			return b
			}
		}
	return a
},
filterValidation:function(a){
	if(!a.isNavKeyPress()){
		this.validationTask.delay(this.validationDelay)
		}
	},
onDisable:function(){
	Ext.form.TextField.superclass.onDisable.call(this);
	if(Ext.isIE){
		this.el.dom.unselectable="on"
		}
	},
onEnable:function(){
	Ext.form.TextField.superclass.onEnable.call(this);
	if(Ext.isIE){
		this.el.dom.unselectable=""
		}
	},
onKeyUpBuffered:function(a){
	if(this.doAutoSize(a)){
		this.autoSize()
		}
	},
doAutoSize:function(a){
	return !a.isNavKeyPress()
	},
onKeyUp:function(a){
	this.fireEvent("keyup",this,a)
	},
onKeyDown:function(a){
	this.fireEvent("keydown",this,a)
	},
onKeyPress:function(a){
	this.fireEvent("keypress",this,a)
	},
reset:function(){
	Ext.form.TextField.superclass.reset.call(this);
	this.applyEmptyText()
	},
applyEmptyText:function(){
	if(this.rendered&&this.emptyText&&this.getRawValue().length<1&&!this.hasFocus){
		this.setRawValue(this.emptyText);
		this.el.addClass(this.emptyClass)
		}
	},
preFocus:function(){
	var a=this.el,b;
	if(this.emptyText){
		if(a.dom.value==this.emptyText){
			this.setRawValue("");
			b=true
			}
			a.removeClass(this.emptyClass)
		}
		if(this.selectOnFocus||b){
		a.dom.select()
		}
	},
postBlur:function(){
	this.applyEmptyText()
	},
filterKeys:function(b){
	if(b.ctrlKey){
		return
	}
	var a=b.getKey();
	if(Ext.isGecko&&(b.isNavKeyPress()||a==b.BACKSPACE||(a==b.DELETE&&b.button==-1))){
		return
	}
	var c=String.fromCharCode(b.getCharCode());
	if(!Ext.isGecko&&b.isSpecialKey()&&!c){
		return
	}
	if(!this.maskRe.test(c)){
		b.stopEvent()
		}
	},
setValue:function(a){
	if(this.emptyText&&this.el&&!Ext.isEmpty(a)){
		this.el.removeClass(this.emptyClass)
		}
		Ext.form.TextField.superclass.setValue.apply(this,arguments);
	this.applyEmptyText();
	this.autoSize();
	return this
	},
getErrors:function(a){
	var d=Ext.form.TextField.superclass.getErrors.apply(this,arguments);
	a=Ext.isDefined(a)?a:this.processValue(this.getRawValue());
	if(Ext.isFunction(this.validator)){
		var c=this.validator(a);
		if(c!==true){
			d.push(c)
			}
		}
	if(a.length<1||a===this.emptyText){
	if(this.allowBlank){
		return d
		}else{
		d.push(this.blankText)
		}
	}
if(!this.allowBlank&&(a.length<1||a===this.emptyText)){
	d.push(this.blankText)
	}
	if(a.length<this.minLength){
	d.push(String.format(this.minLengthText,this.minLength))
	}
	if(a.length>this.maxLength){
	d.push(String.format(this.maxLengthText,this.maxLength))
	}
	if(this.vtype){
	var b=Ext.form.VTypes;
	if(!b[this.vtype](a,this)){
		d.push(this.vtypeText||b[this.vtype+"Text"])
		}
	}
if(this.regex&&!this.regex.test(a)){
	d.push(this.regexText)
	}
	return d
},
selectText:function(h,a){
	var c=this.getRawValue();
	var e=false;
	if(c.length>0){
		h=h===undefined?0:h;
		a=a===undefined?c.length:a;
		var g=this.el.dom;
		if(g.setSelectionRange){
			g.setSelectionRange(h,a)
			}else{
			if(g.createTextRange){
				var b=g.createTextRange();
				b.moveStart("character",h);
				b.moveEnd("character",a-c.length);
				b.select()
				}
			}
		e=Ext.isGecko||Ext.isOpera
	}else{
	e=true
	}
	if(e){
	this.focus()
	}
},
autoSize:function(){
	if(!this.grow||!this.rendered){
		return
	}
	if(!this.metrics){
		this.metrics=Ext.util.TextMetrics.createInstance(this.el)
		}
		var c=this.el;
	var b=c.dom.value;
	var e=document.createElement("div");
	e.appendChild(document.createTextNode(b));
	b=e.innerHTML;
	Ext.removeNode(e);
	e=null;
	b+="&#160;";
	var a=Math.min(this.growMax,Math.max(this.metrics.getWidth(b)+10,this.growMin));
	this.el.setWidth(a);
	this.fireEvent("autosize",this,a)
	},
onDestroy:function(){
	if(this.validationTask){
		this.validationTask.cancel();
		this.validationTask=null
		}
		Ext.form.TextField.superclass.onDestroy.call(this)
	}
});
Ext.reg("textfield",Ext.form.TextField);
Ext.form.TriggerField=Ext.extend(Ext.form.TextField,{
	defaultAutoCreate:{
		tag:"input",
		type:"text",
		size:"16",
		autocomplete:"off"
	},
	hideTrigger:false,
	editable:true,
	readOnly:false,
	wrapFocusClass:"x-trigger-wrap-focus",
	autoSize:Ext.emptyFn,
	monitorTab:true,
	deferHeight:true,
	mimicing:false,
	actionMode:"wrap",
	defaultTriggerWidth:17,
	onResize:function(a,c){
		Ext.form.TriggerField.superclass.onResize.call(this,a,c);
		var b=this.getTriggerWidth();
		if(Ext.isNumber(a)){
			this.el.setWidth(a-b)
			}
			this.wrap.setWidth(this.el.getWidth()+b)
		},
	getTriggerWidth:function(){
		var a=this.trigger.getWidth();
		if(!this.hideTrigger&&!this.readOnly&&a===0){
			a=this.defaultTriggerWidth
			}
			return a
		},
	alignErrorIcon:function(){
		if(this.wrap){
			this.errorIcon.alignTo(this.wrap,"tl-tr",[2,0])
			}
		},
onRender:function(b,a){
	this.doc=Ext.isIE?Ext.getBody():Ext.getDoc();
	Ext.form.TriggerField.superclass.onRender.call(this,b,a);
	this.wrap=this.el.wrap({
		cls:"x-form-field-wrap x-form-field-trigger-wrap"
	});
	this.trigger=this.wrap.createChild(this.triggerConfig||{
		tag:"img",
		src:Ext.BLANK_IMAGE_URL,
		alt:"",
		cls:"x-form-trigger "+this.triggerClass
		});
	this.initTrigger();
	if(!this.width){
		this.wrap.setWidth(this.el.getWidth()+this.trigger.getWidth())
		}
		this.resizeEl=this.positionEl=this.wrap
	},
getWidth:function(){
	return(this.el.getWidth()+this.trigger.getWidth())
	},
updateEditState:function(){
	if(this.rendered){
		if(this.readOnly){
			this.el.dom.readOnly=true;
			this.el.addClass("x-trigger-noedit");
			this.mun(this.el,"click",this.onTriggerClick,this);
			this.trigger.setDisplayed(false)
			}else{
			if(!this.editable){
				this.el.dom.readOnly=true;
				this.el.addClass("x-trigger-noedit");
				this.mon(this.el,"click",this.onTriggerClick,this)
				}else{
				this.el.dom.readOnly=false;
				this.el.removeClass("x-trigger-noedit");
				this.mun(this.el,"click",this.onTriggerClick,this)
				}
				this.trigger.setDisplayed(!this.hideTrigger)
			}
			this.onResize(this.width||this.wrap.getWidth())
		}
	},
setHideTrigger:function(a){
	if(a!=this.hideTrigger){
		this.hideTrigger=a;
		this.updateEditState()
		}
	},
setEditable:function(a){
	if(a!=this.editable){
		this.editable=a;
		this.updateEditState()
		}
	},
setReadOnly:function(a){
	if(a!=this.readOnly){
		this.readOnly=a;
		this.updateEditState()
		}
	},
afterRender:function(){
	Ext.form.TriggerField.superclass.afterRender.call(this);
	this.updateEditState()
	},
initTrigger:function(){
	this.mon(this.trigger,"click",this.onTriggerClick,this,{
		preventDefault:true
	});
	this.trigger.addClassOnOver("x-form-trigger-over");
	this.trigger.addClassOnClick("x-form-trigger-click")
	},
onDestroy:function(){
	Ext.destroy(this.trigger,this.wrap);
	if(this.mimicing){
		this.doc.un("mousedown",this.mimicBlur,this)
		}
		delete this.doc;
	Ext.form.TriggerField.superclass.onDestroy.call(this)
	},
onFocus:function(){
	Ext.form.TriggerField.superclass.onFocus.call(this);
	if(!this.mimicing){
		this.wrap.addClass(this.wrapFocusClass);
		this.mimicing=true;
		this.doc.on("mousedown",this.mimicBlur,this,{
			delay:10
		});
		if(this.monitorTab){
			this.on("specialkey",this.checkTab,this)
			}
		}
},
checkTab:function(a,b){
	if(b.getKey()==b.TAB){
		this.triggerBlur()
		}
	},
onBlur:Ext.emptyFn,
mimicBlur:function(a){
	if(!this.isDestroyed&&!this.wrap.contains(a.target)&&this.validateBlur(a)){
		this.triggerBlur()
		}
	},
triggerBlur:function(){
	this.mimicing=false;
	this.doc.un("mousedown",this.mimicBlur,this);
	if(this.monitorTab&&this.el){
		this.un("specialkey",this.checkTab,this)
		}
		Ext.form.TriggerField.superclass.onBlur.call(this);
	if(this.wrap){
		this.wrap.removeClass(this.wrapFocusClass)
		}
	},
beforeBlur:Ext.emptyFn,
validateBlur:function(a){
	return true
	},
onTriggerClick:Ext.emptyFn
});
Ext.form.TwinTriggerField=Ext.extend(Ext.form.TriggerField,{
	initComponent:function(){
		Ext.form.TwinTriggerField.superclass.initComponent.call(this);
		this.triggerConfig={
			tag:"span",
			cls:"x-form-twin-triggers",
			cn:[{
				tag:"img",
				src:Ext.BLANK_IMAGE_URL,
				alt:"",
				cls:"x-form-trigger "+this.trigger1Class
				},{
				tag:"img",
				src:Ext.BLANK_IMAGE_URL,
				alt:"",
				cls:"x-form-trigger "+this.trigger2Class
				}]
			}
		},
getTrigger:function(a){
	return this.triggers[a]
	},
afterRender:function(){
	Ext.form.TwinTriggerField.superclass.afterRender.call(this);
	var c=this.triggers,b=0,a=c.length;
	for(;b<a;++b){
		if(this["hideTrigger"+(b+1)]){
			c[b].hide()
			}
		}
	},
initTrigger:function(){
	var a=this.trigger.select(".x-form-trigger",true),b=this;
	a.each(function(d,g,c){
		var e="Trigger"+(c+1);
		d.hide=function(){
			var h=b.wrap.getWidth();
			this.dom.style.display="none";
			b.el.setWidth(h-b.trigger.getWidth());
			b["hidden"+e]=true
			};

		d.show=function(){
			var h=b.wrap.getWidth();
			this.dom.style.display="";
			b.el.setWidth(h-b.trigger.getWidth());
			b["hidden"+e]=false
			};

		this.mon(d,"click",this["on"+e+"Click"],this,{
			preventDefault:true
		});
		d.addClassOnOver("x-form-trigger-over");
		d.addClassOnClick("x-form-trigger-click")
		},this);
	this.triggers=a.elements
	},
getTriggerWidth:function(){
	var a=0;
	Ext.each(this.triggers,function(d,c){
		var e="Trigger"+(c+1),b=d.getWidth();
		if(b===0&&!this["hidden"+e]){
			a+=this.defaultTriggerWidth
			}else{
			a+=b
			}
		},this);
return a
},
onDestroy:function(){
	Ext.destroy(this.triggers);
	Ext.form.TwinTriggerField.superclass.onDestroy.call(this)
	},
onTrigger1Click:Ext.emptyFn,
onTrigger2Click:Ext.emptyFn
});
Ext.reg("trigger",Ext.form.TriggerField);
Ext.form.TextArea=Ext.extend(Ext.form.TextField,{
	growMin:60,
	growMax:1000,
	growAppend:"&#160;\n&#160;",
	enterIsSpecial:false,
	preventScrollbars:false,
	onRender:function(b,a){
		if(!this.el){
			this.defaultAutoCreate={
				tag:"textarea",
				style:"width:100px;height:60px;",
				autocomplete:"off"
			}
		}
		Ext.form.TextArea.superclass.onRender.call(this,b,a);
	if(this.grow){
		this.textSizeEl=Ext.DomHelper.append(document.body,{
			tag:"pre",
			cls:"x-form-grow-sizer"
		});
		if(this.preventScrollbars){
			this.el.setStyle("overflow","hidden")
			}
			this.el.setHeight(this.growMin)
		}
	},
onDestroy:function(){
	Ext.removeNode(this.textSizeEl);
	Ext.form.TextArea.superclass.onDestroy.call(this)
	},
fireKey:function(a){
	if(a.isSpecialKey()&&(this.enterIsSpecial||(a.getKey()!=a.ENTER||a.hasModifier()))){
		this.fireEvent("specialkey",this,a)
		}
	},
doAutoSize:function(a){
	return !a.isNavKeyPress()||a.getKey()==a.ENTER
	},
filterValidation:function(a){
	if(!a.isNavKeyPress()||(!this.enterIsSpecial&&a.keyCode==a.ENTER)){
		this.validationTask.delay(this.validationDelay)
		}
	},
autoSize:function(){
	if(!this.grow||!this.textSizeEl){
		return
	}
	var c=this.el,a=Ext.util.Format.htmlEncode(c.dom.value),d=this.textSizeEl,b;
	Ext.fly(d).setWidth(this.el.getWidth());
	if(a.length<1){
		a="&#160;&#160;"
		}else{
		a+=this.growAppend;
		if(Ext.isIE){
			a=a.replace(/\n/g,"&#160;<br />")
			}
		}
	d.innerHTML=a;
b=Math.min(this.growMax,Math.max(d.offsetHeight,this.growMin));
if(b!=this.lastHeight){
	this.lastHeight=b;
	this.el.setHeight(b);
	this.fireEvent("autosize",this,b)
	}
}
});
Ext.reg("textarea",Ext.form.TextArea);
Ext.form.NumberField=Ext.extend(Ext.form.TextField,{
	fieldClass:"x-form-field x-form-num-field",
	allowDecimals:true,
	decimalSeparator:".",
	decimalPrecision:2,
	allowNegative:true,
	minValue:Number.NEGATIVE_INFINITY,
	maxValue:Number.MAX_VALUE,
	minText:"The minimum value for this field is {0}",
	maxText:"The maximum value for this field is {0}",
	nanText:"{0} is not a valid number",
	baseChars:"0123456789",
	autoStripChars:false,
	initEvents:function(){
		var a=this.baseChars+"";
		if(this.allowDecimals){
			a+=this.decimalSeparator
			}
			if(this.allowNegative){
			a+="-"
			}
			a=Ext.escapeRe(a);
		this.maskRe=new RegExp("["+a+"]");
		if(this.autoStripChars){
			this.stripCharsRe=new RegExp("[^"+a+"]","gi")
			}
			Ext.form.NumberField.superclass.initEvents.call(this)
		},
	getErrors:function(b){
		var c=Ext.form.NumberField.superclass.getErrors.apply(this,arguments);
		b=Ext.isDefined(b)?b:this.processValue(this.getRawValue());
		if(b.length<1){
			return c
			}
			b=String(b).replace(this.decimalSeparator,".");
		if(isNaN(b)){
			c.push(String.format(this.nanText,b))
			}
			var a=this.parseValue(b);
		if(a<this.minValue){
			c.push(String.format(this.minText,this.minValue))
			}
			if(a>this.maxValue){
			c.push(String.format(this.maxText,this.maxValue))
			}
			return c
		},
	getValue:function(){
		return this.fixPrecision(this.parseValue(Ext.form.NumberField.superclass.getValue.call(this)))
		},
	setValue:function(a){
		a=this.fixPrecision(a);
		a=Ext.isNumber(a)?a:parseFloat(String(a).replace(this.decimalSeparator,"."));
		a=isNaN(a)?"":String(a).replace(".",this.decimalSeparator);
		return Ext.form.NumberField.superclass.setValue.call(this,a)
		},
	setMinValue:function(a){
		this.minValue=Ext.num(a,Number.NEGATIVE_INFINITY)
		},
	setMaxValue:function(a){
		this.maxValue=Ext.num(a,Number.MAX_VALUE)
		},
	parseValue:function(a){
		a=parseFloat(String(a).replace(this.decimalSeparator,"."));
		return isNaN(a)?"":a
		},
	fixPrecision:function(b){
		var a=isNaN(b);
		if(!this.allowDecimals||this.decimalPrecision==-1||a||!b){
			return a?"":b
			}
			return parseFloat(parseFloat(b).toFixed(this.decimalPrecision))
		},
	beforeBlur:function(){
		var a=this.parseValue(this.getRawValue());
		if(!Ext.isEmpty(a)){
			this.setValue(a)
			}
		}
});
Ext.reg("numberfield",Ext.form.NumberField);
Ext.form.DateField=Ext.extend(Ext.form.TriggerField,{
	format:"m/d/Y",
	altFormats:"m/d/Y|n/j/Y|n/j/y|m/j/y|n/d/y|m/j/Y|n/d/Y|m-d-y|m-d-Y|m/d|m-d|md|mdy|mdY|d|Y-m-d|n-j|n/j",
	disabledDaysText:"Disabled",
	disabledDatesText:"Disabled",
	minText:"The date in this field must be equal to or after {0}",
	maxText:"The date in this field must be equal to or before {0}",
	invalidText:"{0} is not a valid date - it must be in the format {1}",
	triggerClass:"x-form-date-trigger",
	showToday:true,
	startDay:0,
	defaultAutoCreate:{
		tag:"input",
		type:"text",
		size:"10",
		autocomplete:"off"
	},
	initTime:"12",
	initTimeFormat:"H",
	safeParse:function(b,c){
		if(/[gGhH]/.test(c.replace(/(\\.)/g,""))){
			return Date.parseDate(b,c)
			}else{
			var a=Date.parseDate(b+" "+this.initTime,c+" "+this.initTimeFormat);
			if(a){
				return a.clearTime()
				}
			}
	},
initComponent:function(){
	Ext.form.DateField.superclass.initComponent.call(this);
	this.addEvents("select");
	if(Ext.isString(this.minValue)){
		this.minValue=this.parseDate(this.minValue)
		}
		if(Ext.isString(this.maxValue)){
		this.maxValue=this.parseDate(this.maxValue)
		}
		this.disabledDatesRE=null;
	this.initDisabledDays()
	},
initEvents:function(){
	Ext.form.DateField.superclass.initEvents.call(this);
	this.keyNav=new Ext.KeyNav(this.el,{
		down:function(a){
			this.onTriggerClick()
			},
		scope:this,
		forceKeyDown:true
	})
	},
initDisabledDays:function(){
	if(this.disabledDates){
		var b=this.disabledDates,a=b.length-1,c="(?:";
		Ext.each(b,function(g,e){
			c+=Ext.isDate(g)?"^"+Ext.escapeRe(g.dateFormat(this.format))+"$":b[e];
			if(e!=a){
				c+="|"
				}
			},this);
	this.disabledDatesRE=new RegExp(c+")")
	}
},
setDisabledDates:function(a){
	this.disabledDates=a;
	this.initDisabledDays();
	if(this.menu){
		this.menu.picker.setDisabledDates(this.disabledDatesRE)
		}
	},
setDisabledDays:function(a){
	this.disabledDays=a;
	if(this.menu){
		this.menu.picker.setDisabledDays(a)
		}
	},
setMinValue:function(a){
	this.minValue=(Ext.isString(a)?this.parseDate(a):a);
	if(this.menu){
		this.menu.picker.setMinDate(this.minValue)
		}
	},
setMaxValue:function(a){
	this.maxValue=(Ext.isString(a)?this.parseDate(a):a);
	if(this.menu){
		this.menu.picker.setMaxDate(this.maxValue)
		}
	},
getErrors:function(e){
	var h=Ext.form.DateField.superclass.getErrors.apply(this,arguments);
	e=this.formatDate(e||this.processValue(this.getRawValue()));
	if(e.length<1){
		return h
		}
		var c=e;
	e=this.parseDate(e);
	if(!e){
		h.push(String.format(this.invalidText,c,this.format));
		return h
		}
		var g=e.getTime();
	if(this.minValue&&g<this.minValue.clearTime().getTime()){
		h.push(String.format(this.minText,this.formatDate(this.minValue)))
		}
		if(this.maxValue&&g>this.maxValue.clearTime().getTime()){
		h.push(String.format(this.maxText,this.formatDate(this.maxValue)))
		}
		if(this.disabledDays){
		var a=e.getDay();
		for(var b=0;b<this.disabledDays.length;b++){
			if(a===this.disabledDays[b]){
				h.push(this.disabledDaysText);
				break
			}
		}
		}
	var d=this.formatDate(e);
if(this.disabledDatesRE&&this.disabledDatesRE.test(d)){
	h.push(String.format(this.disabledDatesText,d))
	}
	return h
},
validateBlur:function(){
	return !this.menu||!this.menu.isVisible()
	},
getValue:function(){
	return this.parseDate(Ext.form.DateField.superclass.getValue.call(this))||""
	},
setValue:function(a){
	return Ext.form.DateField.superclass.setValue.call(this,this.formatDate(this.parseDate(a)))
	},
parseDate:function(g){
	if(!g||Ext.isDate(g)){
		return g
		}
		var b=this.safeParse(g,this.format),c=this.altFormats,e=this.altFormatsArray;
	if(!b&&c){
		e=e||c.split("|");
		for(var d=0,a=e.length;d<a&&!b;d++){
			b=this.safeParse(g,e[d])
			}
		}
		return b
},
onDestroy:function(){
	Ext.destroy(this.menu,this.keyNav);
	Ext.form.DateField.superclass.onDestroy.call(this)
	},
formatDate:function(a){
	return Ext.isDate(a)?a.dateFormat(this.format):a
	},
onTriggerClick:function(){
	if(this.disabled){
		return
	}
	if(this.menu==null){
		this.menu=new Ext.menu.DateMenu({
			hideOnClick:false,
			focusOnSelect:false
		})
		}
		this.onFocus();
	Ext.apply(this.menu.picker,{
		minDate:this.minValue,
		maxDate:this.maxValue,
		disabledDatesRE:this.disabledDatesRE,
		disabledDatesText:this.disabledDatesText,
		disabledDays:this.disabledDays,
		disabledDaysText:this.disabledDaysText,
		format:this.format,
		showToday:this.showToday,
		startDay:this.startDay,
		minText:String.format(this.minText,this.formatDate(this.minValue)),
		maxText:String.format(this.maxText,this.formatDate(this.maxValue))
		});
	this.menu.picker.setValue(this.getValue()||new Date());
	this.menu.show(this.el,"tl-bl?");
	this.menuEvents("on")
	},
menuEvents:function(a){
	this.menu[a]("select",this.onSelect,this);
	this.menu[a]("hide",this.onMenuHide,this);
	this.menu[a]("show",this.onFocus,this)
	},
onSelect:function(a,b){
	this.setValue(b);
	this.fireEvent("select",this,b);
	this.menu.hide()
	},
onMenuHide:function(){
	this.focus(false,60);
	this.menuEvents("un")
	},
beforeBlur:function(){
	var a=this.parseDate(this.getRawValue());
	if(a){
		this.setValue(a)
		}
	}
});
Ext.reg("datefield",Ext.form.DateField);
Ext.form.DisplayField=Ext.extend(Ext.form.Field,{
	validationEvent:false,
	validateOnBlur:false,
	defaultAutoCreate:{
		tag:"div"
	},
	fieldClass:"x-form-display-field",
	htmlEncode:false,
	initEvents:Ext.emptyFn,
	isValid:function(){
		return true
		},
	validate:function(){
		return true
		},
	getRawValue:function(){
		var a=this.rendered?this.el.dom.innerHTML:Ext.value(this.value,"");
		if(a===this.emptyText){
			a=""
			}
			if(this.htmlEncode){
			a=Ext.util.Format.htmlDecode(a)
			}
			return a
		},
	getValue:function(){
		return this.getRawValue()
		},
	getName:function(){
		return this.name
		},
	setRawValue:function(a){
		if(this.htmlEncode){
			a=Ext.util.Format.htmlEncode(a)
			}
			return this.rendered?(this.el.dom.innerHTML=(Ext.isEmpty(a)?"":a)):(this.value=a)
		},
	setValue:function(a){
		this.setRawValue(a);
		return this
		}
	});
Ext.reg("displayfield",Ext.form.DisplayField);
Ext.form.ComboBox=Ext.extend(Ext.form.TriggerField,{
	defaultAutoCreate:{
		tag:"input",
		type:"text",
		size:"24",
		autocomplete:"off"
	},
	listClass:"",
	selectedClass:"x-combo-selected",
	listEmptyText:"",
	triggerClass:"x-form-arrow-trigger",
	shadow:"sides",
	listAlign:"tl-bl?",
	maxHeight:300,
	minHeight:90,
	triggerAction:"query",
	minChars:4,
	autoSelect:true,
	typeAhead:false,
	queryDelay:500,
	pageSize:0,
	selectOnFocus:false,
	queryParam:"query",
	loadingText:"Loading...",
	resizable:false,
	handleHeight:8,
	allQuery:"",
	mode:"remote",
	minListWidth:70,
	forceSelection:false,
	typeAheadDelay:250,
	lazyInit:true,
	clearFilterOnReset:true,
	submitValue:undefined,
	initComponent:function(){
		Ext.form.ComboBox.superclass.initComponent.call(this);
		this.addEvents("expand","collapse","beforeselect","select","beforequery");
		if(this.transform){
			var c=Ext.getDom(this.transform);
			if(!this.hiddenName){
				this.hiddenName=c.name
				}
				if(!this.store){
				this.mode="local";
				var k=[],e=c.options;
				for(var b=0,a=e.length;b<a;b++){
					var h=e[b],g=(h.hasAttribute?h.hasAttribute("value"):h.getAttributeNode("value").specified)?h.value:h.text;
					if(h.selected&&Ext.isEmpty(this.value,true)){
						this.value=g
						}
						k.push([g,h.text])
					}
					this.store=new Ext.data.ArrayStore({
					idIndex:0,
					fields:["value","text"],
					data:k,
					autoDestroy:true
				});
				this.valueField="value";
				this.displayField="text"
				}
				c.name=Ext.id();
			if(!this.lazyRender){
				this.target=true;
				this.el=Ext.DomHelper.insertBefore(c,this.autoCreate||this.defaultAutoCreate);
				this.render(this.el.parentNode,c)
				}
				Ext.removeNode(c)
			}else{
			if(this.store){
				this.store=Ext.StoreMgr.lookup(this.store);
				if(this.store.autoCreated){
					this.displayField=this.valueField="field1";
					if(!this.store.expandData){
						this.displayField="field2"
						}
						this.mode="local"
					}
				}
		}
	this.selectedIndex=-1;
if(this.mode=="local"){
	if(!Ext.isDefined(this.initialConfig.queryDelay)){
		this.queryDelay=10
		}
		if(!Ext.isDefined(this.initialConfig.minChars)){
		this.minChars=0
		}
	}
},
onRender:function(b,a){
	if(this.hiddenName&&!Ext.isDefined(this.submitValue)){
		this.submitValue=false
		}
		Ext.form.ComboBox.superclass.onRender.call(this,b,a);
	if(this.hiddenName){
		this.hiddenField=this.el.insertSibling({
			tag:"input",
			type:"hidden",
			name:this.hiddenName,
			id:(this.hiddenId||Ext.id())
			},"before",true)
		}
		if(Ext.isGecko){
		this.el.dom.setAttribute("autocomplete","off")
		}
		if(!this.lazyInit){
		this.initList()
		}else{
		this.on("focus",this.initList,this,{
			single:true
		})
		}
	},
initValue:function(){
	Ext.form.ComboBox.superclass.initValue.call(this);
	if(this.hiddenField){
		this.hiddenField.value=Ext.value(Ext.isDefined(this.hiddenValue)?this.hiddenValue:this.value,"")
		}
	},
getParentZIndex:function(){
	var a;
	if(this.ownerCt){
		this.findParentBy(function(b){
			a=parseInt(b.getPositionEl().getStyle("z-index"),10);
			return !!a
			})
		}
		return a
	},
getZIndex:function(b){
	b=b||Ext.getDom(this.getListParent()||Ext.getBody());
	var a=parseInt(Ext.fly(b).getStyle("z-index"),10);
	if(!a){
		a=this.getParentZIndex()
		}
		return(a||12000)+5
	},
initList:function(){
	if(!this.list){
		var a="x-combo-list",c=Ext.getDom(this.getListParent()||Ext.getBody());
		this.list=new Ext.Layer({
			parentEl:c,
			shadow:this.shadow,
			cls:[a,this.listClass].join(" "),
			constrain:false,
			zindex:this.getZIndex(c)
			});
		var b=this.listWidth||Math.max(this.wrap.getWidth(),this.minListWidth);
		this.list.setSize(b,0);
		this.list.swallowEvent("mousewheel");
		this.assetHeight=0;
		if(this.syncFont!==false){
			this.list.setStyle("font-size",this.el.getStyle("font-size"))
			}
			if(this.title){
			this.header=this.list.createChild({
				cls:a+"-hd",
				html:this.title
				});
			this.assetHeight+=this.header.getHeight()
			}
			this.innerList=this.list.createChild({
			cls:a+"-inner"
			});
		this.mon(this.innerList,"mouseover",this.onViewOver,this);
		this.mon(this.innerList,"mousemove",this.onViewMove,this);
		this.innerList.setWidth(b-this.list.getFrameWidth("lr"));
		if(this.pageSize){
			this.footer=this.list.createChild({
				cls:a+"-ft"
				});
			this.pageTb=new Ext.PagingToolbar({
				store:this.store,
				pageSize:this.pageSize,
				renderTo:this.footer
				});
			this.assetHeight+=this.footer.getHeight()
			}
			if(!this.tpl){
			this.tpl='<tpl for="."><div class="'+a+'-item">{'+this.displayField+"}</div></tpl>"
			}
			this.view=new Ext.DataView({
			applyTo:this.innerList,
			tpl:this.tpl,
			singleSelect:true,
			selectedClass:this.selectedClass,
			itemSelector:this.itemSelector||"."+a+"-item",
			emptyText:this.listEmptyText,
			deferEmptyText:false
		});
		this.mon(this.view,{
			containerclick:this.onViewClick,
			click:this.onViewClick,
			scope:this
		});
		this.bindStore(this.store,true);
		if(this.resizable){
			this.resizer=new Ext.Resizable(this.list,{
				pinned:true,
				handles:"se"
			});
			this.mon(this.resizer,"resize",function(g,d,e){
				this.maxHeight=e-this.handleHeight-this.list.getFrameWidth("tb")-this.assetHeight;
				this.listWidth=d;
				this.innerList.setWidth(d-this.list.getFrameWidth("lr"));
				this.restrictHeight()
				},this);
			this[this.pageSize?"footer":"innerList"].setStyle("margin-bottom",this.handleHeight+"px")
			}
		}
},
getListParent:function(){
	return document.body
	},
getStore:function(){
	return this.store
	},
bindStore:function(a,b){
	if(this.store&&!b){
		if(this.store!==a&&this.store.autoDestroy){
			this.store.destroy()
			}else{
			this.store.un("beforeload",this.onBeforeLoad,this);
			this.store.un("load",this.onLoad,this);
			this.store.un("exception",this.collapse,this)
			}
			if(!a){
			this.store=null;
			if(this.view){
				this.view.bindStore(null)
				}
				if(this.pageTb){
				this.pageTb.bindStore(null)
				}
			}
	}
if(a){
	if(!b){
		this.lastQuery=null;
		if(this.pageTb){
			this.pageTb.bindStore(a)
			}
		}
	this.store=Ext.StoreMgr.lookup(a);
this.store.on({
	scope:this,
	beforeload:this.onBeforeLoad,
	load:this.onLoad,
	exception:this.collapse
	});
if(this.view){
	this.view.bindStore(a)
	}
}
},
reset:function(){
	if(this.clearFilterOnReset&&this.mode=="local"){
		this.store.clearFilter()
		}
		Ext.form.ComboBox.superclass.reset.call(this)
	},
initEvents:function(){
	Ext.form.ComboBox.superclass.initEvents.call(this);
	this.keyNav=new Ext.KeyNav(this.el,{
		up:function(a){
			this.inKeyMode=true;
			this.selectPrev()
			},
		down:function(a){
			if(!this.isExpanded()){
				this.onTriggerClick()
				}else{
				this.inKeyMode=true;
				this.selectNext()
				}
			},
	enter:function(a){
		this.onViewClick()
		},
	esc:function(a){
		this.collapse()
		},
	tab:function(a){
		if(this.forceSelection===true){
			this.collapse()
			}else{
			this.onViewClick(false)
			}
			return true
		},
	scope:this,
	doRelay:function(c,b,a){
		if(a=="down"||this.scope.isExpanded()){
			var d=Ext.KeyNav.prototype.doRelay.apply(this,arguments);
			if(!Ext.isIE&&Ext.EventManager.useKeydown){
				this.scope.fireKey(c)
				}
				return d
			}
			return true
		},
	forceKeyDown:true,
	defaultEventAction:"stopEvent"
	});
this.queryDelay=Math.max(this.queryDelay||10,this.mode=="local"?10:250);
this.dqTask=new Ext.util.DelayedTask(this.initQuery,this);
if(this.typeAhead){
	this.taTask=new Ext.util.DelayedTask(this.onTypeAhead,this)
	}
	if(!this.enableKeyEvents){
	this.mon(this.el,"keyup",this.onKeyUp,this)
	}
},
onDestroy:function(){
	if(this.dqTask){
		this.dqTask.cancel();
		this.dqTask=null
		}
		this.bindStore(null);
	Ext.destroy(this.resizer,this.view,this.pageTb,this.list);
	Ext.destroyMembers(this,"hiddenField");
	Ext.form.ComboBox.superclass.onDestroy.call(this)
	},
fireKey:function(a){
	if(!this.isExpanded()){
		Ext.form.ComboBox.superclass.fireKey.call(this,a)
		}
	},
onResize:function(a,b){
	Ext.form.ComboBox.superclass.onResize.apply(this,arguments);
	if(!isNaN(a)&&this.isVisible()&&this.list){
		this.doResize(a)
		}else{
		this.bufferSize=a
		}
	},
doResize:function(a){
	if(!Ext.isDefined(this.listWidth)){
		var b=Math.max(a,this.minListWidth);
		this.list.setWidth(b);
		this.innerList.setWidth(b-this.list.getFrameWidth("lr"))
		}
	},
onEnable:function(){
	Ext.form.ComboBox.superclass.onEnable.apply(this,arguments);
	if(this.hiddenField){
		this.hiddenField.disabled=false
		}
	},
onDisable:function(){
	Ext.form.ComboBox.superclass.onDisable.apply(this,arguments);
	if(this.hiddenField){
		this.hiddenField.disabled=true
		}
	},
onBeforeLoad:function(){
	if(!this.hasFocus){
		return
	}
	this.innerList.update(this.loadingText?'<div class="loading-indicator">'+this.loadingText+"</div>":"");
	this.restrictHeight();
	this.selectedIndex=-1
	},
onLoad:function(){
	if(!this.hasFocus){
		return
	}
	if(this.store.getCount()>0||this.listEmptyText){
		this.expand();
		this.restrictHeight();
		if(this.lastQuery==this.allQuery){
			if(this.editable){
				this.el.dom.select()
				}
				if(this.autoSelect!==false&&!this.selectByValue(this.value,true)){
				this.select(0,true)
				}
			}else{
		if(this.autoSelect!==false){
			this.selectNext()
			}
			if(this.typeAhead&&this.lastKey!=Ext.EventObject.BACKSPACE&&this.lastKey!=Ext.EventObject.DELETE){
			this.taTask.delay(this.typeAheadDelay)
			}
		}
}else{
	this.collapse()
	}
},
onTypeAhead:function(){
	if(this.store.getCount()>0){
		var b=this.store.getAt(0);
		var c=b.data[this.displayField];
		var a=c.length;
		var d=this.getRawValue().length;
		if(d!=a){
			this.setRawValue(c);
			this.selectText(d,c.length)
			}
		}
},
assertValue:function(){
	var b=this.getRawValue(),a;
	if(this.valueField&&Ext.isDefined(this.value)){
		a=this.findRecord(this.valueField,this.value)
		}
		if(!a||a.get(this.displayField)!=b){
		a=this.findRecord(this.displayField,b)
		}
		if(!a&&this.forceSelection){
		if(b.length>0&&b!=this.emptyText){
			this.el.dom.value=Ext.value(this.lastSelectionText,"");
			this.applyEmptyText()
			}else{
			this.clearValue()
			}
		}else{
	if(a&&this.valueField){
		if(this.value==b){
			return
		}
		b=a.get(this.valueField||this.displayField)
		}
		this.setValue(b)
	}
},
onSelect:function(a,b){
	if(this.fireEvent("beforeselect",this,a,b)!==false){
		this.setValue(a.data[this.valueField||this.displayField]);
		this.collapse();
		this.fireEvent("select",this,a,b)
		}
	},
getName:function(){
	var a=this.hiddenField;
	return a&&a.name?a.name:this.hiddenName||Ext.form.ComboBox.superclass.getName.call(this)
	},
getValue:function(){
	if(this.valueField){
		return Ext.isDefined(this.value)?this.value:""
		}else{
		return Ext.form.ComboBox.superclass.getValue.call(this)
		}
	},
clearValue:function(){
	if(this.hiddenField){
		this.hiddenField.value=""
		}
		this.setRawValue("");
	this.lastSelectionText="";
	this.applyEmptyText();
	this.value=""
	},
setValue:function(a){
	var c=a;
	if(this.valueField){
		var b=this.findRecord(this.valueField,a);
		if(b){
			c=b.data[this.displayField]
			}else{
			if(Ext.isDefined(this.valueNotFoundText)){
				c=this.valueNotFoundText
				}
			}
	}
this.lastSelectionText=c;
if(this.hiddenField){
	this.hiddenField.value=Ext.value(a,"")
	}
	Ext.form.ComboBox.superclass.setValue.call(this,c);
this.value=a;
return this
},
findRecord:function(c,b){
	var a;
	if(this.store.getCount()>0){
		this.store.each(function(d){
			if(d.data[c]==b){
				a=d;
				return false
				}
			})
	}
	return a
},
onViewMove:function(b,a){
	this.inKeyMode=false
	},
onViewOver:function(d,b){
	if(this.inKeyMode){
		return
	}
	var c=this.view.findItemFromChild(b);
	if(c){
		var a=this.view.indexOf(c);
		this.select(a,false)
		}
	},
onViewClick:function(b){
	var a=this.view.getSelectedIndexes()[0],c=this.store,d=c.getAt(a);
	if(d){
		this.onSelect(d,a)
		}else{
		this.collapse()
		}
		if(b!==false){
		this.el.focus()
		}
	},
restrictHeight:function(){
	this.innerList.dom.style.height="";
	var b=this.innerList.dom,e=this.list.getFrameWidth("tb")+(this.resizable?this.handleHeight:0)+this.assetHeight,c=Math.max(b.clientHeight,b.offsetHeight,b.scrollHeight),a=this.getPosition()[1]-Ext.getBody().getScroll().top,g=Ext.lib.Dom.getViewHeight()-a-this.getSize().height,d=Math.max(a,g,this.minHeight||0)-this.list.shadowOffset-e-5;
	c=Math.min(c,d,this.maxHeight);
	this.innerList.setHeight(c);
	this.list.beginUpdate();
	this.list.setHeight(c+e);
	this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));
	this.list.endUpdate()
	},
isExpanded:function(){
	return this.list&&this.list.isVisible()
	},
selectByValue:function(a,c){
	if(!Ext.isEmpty(a,true)){
		var b=this.findRecord(this.valueField||this.displayField,a);
		if(b){
			this.select(this.store.indexOf(b),c);
			return true
			}
		}
	return false
},
select:function(a,c){
	this.selectedIndex=a;
	this.view.select(a);
	if(c!==false){
		var b=this.view.getNode(a);
		if(b){
			this.innerList.scrollChildIntoView(b,false)
			}
		}
},
selectNext:function(){
	var a=this.store.getCount();
	if(a>0){
		if(this.selectedIndex==-1){
			this.select(0)
			}else{
			if(this.selectedIndex<a-1){
				this.select(this.selectedIndex+1)
				}
			}
	}
},
selectPrev:function(){
	var a=this.store.getCount();
	if(a>0){
		if(this.selectedIndex==-1){
			this.select(0)
			}else{
			if(this.selectedIndex!==0){
				this.select(this.selectedIndex-1)
				}
			}
	}
},
onKeyUp:function(b){
	var a=b.getKey();
	if(this.editable!==false&&this.readOnly!==true&&(a==b.BACKSPACE||!b.isSpecialKey())){
		this.lastKey=a;
		this.dqTask.delay(this.queryDelay)
		}
		Ext.form.ComboBox.superclass.onKeyUp.call(this,b)
	},
validateBlur:function(){
	return !this.list||!this.list.isVisible()
	},
initQuery:function(){
	this.doQuery(this.getRawValue())
	},
beforeBlur:function(){
	this.assertValue()
	},
postBlur:function(){
	Ext.form.ComboBox.superclass.postBlur.call(this);
	this.collapse();
	this.inKeyMode=false
	},
doQuery:function(c,b){
	c=Ext.isEmpty(c)?"":c;
	var a={
		query:c,
		forceAll:b,
		combo:this,
		cancel:false
	};

	if(this.fireEvent("beforequery",a)===false||a.cancel){
		return false
		}
		c=a.query;
	b=a.forceAll;
	if(b===true||(c.length>=this.minChars)){
		if(this.lastQuery!==c){
			this.lastQuery=c;
			if(this.mode=="local"){
				this.selectedIndex=-1;
				if(b){
					this.store.clearFilter()
					}else{
					this.store.filter(this.displayField,c)
					}
					this.onLoad()
				}else{
				this.store.baseParams[this.queryParam]=c;
				this.store.load({
					params:this.getParams(c)
					});
				this.expand()
				}
			}else{
		this.selectedIndex=-1;
		this.onLoad()
		}
	}
},
getParams:function(a){
	var b={},c=this.store.paramNames;
	if(this.pageSize){
		b[c.start]=0;
		b[c.limit]=this.pageSize
		}
		return b
	},
collapse:function(){
	if(!this.isExpanded()){
		return
	}
	this.list.hide();
	Ext.getDoc().un("mousewheel",this.collapseIf,this);
	Ext.getDoc().un("mousedown",this.collapseIf,this);
	this.fireEvent("collapse",this)
	},
collapseIf:function(a){
	if(!this.isDestroyed&&!a.within(this.wrap)&&!a.within(this.list)){
		this.collapse()
		}
	},
expand:function(){
	if(this.isExpanded()||!this.hasFocus){
		return
	}
	if(this.title||this.pageSize){
		this.assetHeight=0;
		if(this.title){
			this.assetHeight+=this.header.getHeight()
			}
			if(this.pageSize){
			this.assetHeight+=this.footer.getHeight()
			}
		}
	if(this.bufferSize){
	this.doResize(this.bufferSize);
	delete this.bufferSize
	}
	this.list.alignTo.apply(this.list,[this.el].concat(this.listAlign));
this.list.setZIndex(this.getZIndex());
this.list.show();
if(Ext.isGecko2){
	this.innerList.setOverflow("auto")
	}
	this.mon(Ext.getDoc(),{
	scope:this,
	mousewheel:this.collapseIf,
	mousedown:this.collapseIf
	});
this.fireEvent("expand",this)
},
onTriggerClick:function(){
	if(this.readOnly||this.disabled){
		return
	}
	if(this.isExpanded()){
		this.collapse();
		this.el.focus()
		}else{
		this.onFocus({});
		if(this.triggerAction=="all"){
			this.doQuery(this.allQuery,true)
			}else{
			this.doQuery(this.getRawValue())
			}
			this.el.focus()
		}
	}
});
Ext.reg("combo",Ext.form.ComboBox);
Ext.form.Checkbox=Ext.extend(Ext.form.Field,{
	focusClass:undefined,
	fieldClass:"x-form-field",
	checked:false,
	boxLabel:"&#160;",
	defaultAutoCreate:{
		tag:"input",
		type:"checkbox",
		autocomplete:"off"
	},
	actionMode:"wrap",
	initComponent:function(){
		Ext.form.Checkbox.superclass.initComponent.call(this);
		this.addEvents("check")
		},
	onResize:function(){
		Ext.form.Checkbox.superclass.onResize.apply(this,arguments);
		if(!this.boxLabel&&!this.fieldLabel){
			this.el.alignTo(this.wrap,"c-c")
			}
		},
initEvents:function(){
	Ext.form.Checkbox.superclass.initEvents.call(this);
	this.mon(this.el,{
		scope:this,
		click:this.onClick,
		change:this.onClick
		})
	},
markInvalid:Ext.emptyFn,
clearInvalid:Ext.emptyFn,
onRender:function(b,a){
	Ext.form.Checkbox.superclass.onRender.call(this,b,a);
	if(this.inputValue!==undefined){
		this.el.dom.value=this.inputValue
		}
		this.wrap=this.el.wrap({
		cls:"x-form-check-wrap"
	});
	if(this.boxLabel){
		this.wrap.createChild({
			tag:"label",
			htmlFor:this.el.id,
			cls:"x-form-cb-label",
			html:this.boxLabel
			})
		}
		if(this.checked){
		this.setValue(true)
		}else{
		this.checked=this.el.dom.checked
		}
		if(Ext.isIE&&!Ext.isStrict){
		this.wrap.repaint()
		}
		this.resizeEl=this.positionEl=this.wrap
	},
onDestroy:function(){
	Ext.destroy(this.wrap);
	Ext.form.Checkbox.superclass.onDestroy.call(this)
	},
initValue:function(){
	this.originalValue=this.getValue()
	},
getValue:function(){
	if(this.rendered){
		return this.el.dom.checked
		}
		return this.checked
	},
onClick:function(){
	if(this.el.dom.checked!=this.checked){
		this.setValue(this.el.dom.checked)
		}
	},
setValue:function(a){
	var c=this.checked,b=this.inputValue;
	this.checked=(a===true||a==="true"||a=="1"||(b?a==b:String(a).toLowerCase()=="on"));
	if(this.rendered){
		this.el.dom.checked=this.checked;
		this.el.dom.defaultChecked=this.checked
		}
		if(c!=this.checked){
		this.fireEvent("check",this,this.checked);
		if(this.handler){
			this.handler.call(this.scope||this,this,this.checked)
			}
		}
	return this
}
});
Ext.reg("checkbox",Ext.form.Checkbox);
Ext.form.CheckboxGroup=Ext.extend(Ext.form.Field,{
	columns:"auto",
	vertical:false,
	allowBlank:true,
	blankText:"You must select at least one item in this group",
	defaultType:"checkbox",
	groupCls:"x-form-check-group",
	initComponent:function(){
		this.addEvents("change");
		this.on("change",this.validate,this);
		Ext.form.CheckboxGroup.superclass.initComponent.call(this)
		},
	onRender:function(k,g){
		if(!this.el){
			var q={
				autoEl:{
					id:this.id
					},
				cls:this.groupCls,
				layout:"column",
				renderTo:k,
				bufferResize:false
			};

			var a={
				xtype:"container",
				defaultType:this.defaultType,
				layout:"form",
				defaults:{
					hideLabel:true,
					anchor:"100%"
				}
			};

		if(this.items[0].items){
			Ext.apply(q,{
				layoutConfig:{
					columns:this.items.length
					},
				defaults:this.defaults,
				items:this.items
				});
			for(var e=0,n=this.items.length;e<n;e++){
				Ext.applyIf(this.items[e],a)
				}
			}else{
		var d,o=[];
		if(typeof this.columns=="string"){
			this.columns=this.items.length
			}
			if(!Ext.isArray(this.columns)){
			var m=[];
			for(var e=0;e<this.columns;e++){
				m.push((100/this.columns)*0.01)
				}
				this.columns=m
			}
			d=this.columns.length;
		for(var e=0;e<d;e++){
			var b=Ext.apply({
				items:[]
			},a);
			b[this.columns[e]<=1?"columnWidth":"width"]=this.columns[e];
			if(this.defaults){
				b.defaults=Ext.apply(b.defaults||{},this.defaults)
				}
				o.push(b)
			}
			if(this.vertical){
			var s=Math.ceil(this.items.length/d),p=0;
			for(var e=0,n=this.items.length;e<n;e++){
				if(e>0&&e%s==0){
					p++
				}
				if(this.items[e].fieldLabel){
					this.items[e].hideLabel=false
					}
					o[p].items.push(this.items[e])
				}
			}else{
		for(var e=0,n=this.items.length;e<n;e++){
			var r=e%d;
			if(this.items[e].fieldLabel){
				this.items[e].hideLabel=false
				}
				o[r].items.push(this.items[e])
			}
		}
		Ext.apply(q,{
	layoutConfig:{
		columns:d
	},
	items:o
})
}
this.panel=new Ext.Container(q);
	this.panel.ownerCt=this;
	this.el=this.panel.getEl();
	if(this.forId&&this.itemCls){
	var c=this.el.up(this.itemCls).child("label",true);
	if(c){
		c.setAttribute("htmlFor",this.forId)
		}
	}
var h=this.panel.findBy(function(i){
	return i.isFormField
	},this);
this.items=new Ext.util.MixedCollection();
this.items.addAll(h)
}
Ext.form.CheckboxGroup.superclass.onRender.call(this,k,g)
},
initValue:function(){
	if(this.value){
		this.setValue.apply(this,this.buffered?this.value:[this.value]);
		delete this.buffered;
		delete this.value
		}
	},
afterRender:function(){
	Ext.form.CheckboxGroup.superclass.afterRender.call(this);
	this.eachItem(function(a){
		a.on("check",this.fireChecked,this);
		a.inGroup=true
		})
	},
doLayout:function(){
	if(this.rendered){
		this.panel.forceLayout=this.ownerCt.forceLayout;
		this.panel.doLayout()
		}
	},
fireChecked:function(){
	var a=[];
	this.eachItem(function(b){
		if(b.checked){
			a.push(b)
			}
		});
this.fireEvent("change",this,a)
},
getErrors:function(){
	var b=Ext.form.CheckboxGroup.superclass.getErrors.apply(this,arguments);
	if(!this.allowBlank){
		var a=true;
		this.eachItem(function(c){
			if(c.checked){
				return(a=false)
				}
			});
	if(a){
		b.push(this.blankText)
		}
	}
return b
},
isDirty:function(){
	if(this.disabled||!this.rendered){
		return false
		}
		var a=false;
	this.eachItem(function(b){
		if(b.isDirty()){
			a=true;
			return false
			}
		});
return a
},
setReadOnly:function(a){
	if(this.rendered){
		this.eachItem(function(b){
			b.setReadOnly(a)
			})
		}
		this.readOnly=a
	},
onDisable:function(){
	this.eachItem(function(a){
		a.disable()
		})
	},
onEnable:function(){
	this.eachItem(function(a){
		a.enable()
		})
	},
onResize:function(a,b){
	this.panel.setSize(a,b);
	this.panel.doLayout()
	},
reset:function(){
	if(this.originalValue){
		this.eachItem(function(a){
			if(a.setValue){
				a.setValue(false);
				a.originalValue=a.getValue()
				}
			});
	this.resetOriginal=true;
	this.setValue(this.originalValue);
	delete this.resetOriginal
	}else{
	this.eachItem(function(a){
		if(a.reset){
			a.reset()
			}
		})
}(function(){
	this.clearInvalid()
	}).defer(50,this)
},
setValue:function(){
	if(this.rendered){
		this.onSetValue.apply(this,arguments)
		}else{
		this.buffered=true;
		this.value=arguments
		}
		return this
	},
onSetValue:function(d,c){
	if(arguments.length==1){
		if(Ext.isArray(d)){
			Ext.each(d,function(h,e){
				if(Ext.isObject(h)&&h.setValue){
					h.setValue(true);
					if(this.resetOriginal===true){
						h.originalValue=h.getValue()
						}
					}else{
				var g=this.items.itemAt(e);
				if(g){
					g.setValue(h)
					}
				}
			},this)
}else{
	if(Ext.isObject(d)){
		for(var a in d){
			var b=this.getBox(a);
			if(b){
				b.setValue(d[a])
				}
			}
		}else{
	this.setValueForItem(d)
	}
}
}else{
	var b=this.getBox(d);
	if(b){
		b.setValue(c)
		}
	}
},
beforeDestroy:function(){
	Ext.destroy(this.panel);
	if(!this.rendered){
		Ext.destroy(this.items)
		}
		Ext.form.CheckboxGroup.superclass.beforeDestroy.call(this)
	},
setValueForItem:function(a){
	a=String(a).split(",");
	this.eachItem(function(b){
		if(a.indexOf(b.inputValue)>-1){
			b.setValue(true)
			}
		})
},
getBox:function(b){
	var a=null;
	this.eachItem(function(c){
		if(b==c||c.dataIndex==b||c.id==b||c.getName()==b){
			a=c;
			return false
			}
		});
return a
},
getValue:function(){
	var a=[];
	this.eachItem(function(b){
		if(b.checked){
			a.push(b)
			}
		});
return a
},
eachItem:function(b,a){
	if(this.items&&this.items.each){
		this.items.each(b,a||this)
		}
	},
getRawValue:Ext.emptyFn,
setRawValue:Ext.emptyFn
});
Ext.reg("checkboxgroup",Ext.form.CheckboxGroup);
Ext.form.CompositeField=Ext.extend(Ext.form.Field,{
	defaultMargins:"0 5 0 0",
	skipLastItemMargin:true,
	isComposite:true,
	combineErrors:true,
	labelConnector:", ",
	initComponent:function(){
		var g=[],b=this.items,e;
		for(var d=0,c=b.length;d<c;d++){
			e=b[d];
			if(!Ext.isEmpty(e.ref)){
				e.ref="../"+e.ref
				}
				g.push(e.fieldLabel);
			Ext.applyIf(e,this.defaults);
			if(!(d==c-1&&this.skipLastItemMargin)){
				Ext.applyIf(e,{
					margins:this.defaultMargins
					})
				}
			}
		this.fieldLabel=this.fieldLabel||this.buildLabel(g);
	this.fieldErrors=new Ext.util.MixedCollection(true,function(h){
		return h.field
		});
	this.fieldErrors.on({
		scope:this,
		add:this.updateInvalidMark,
		remove:this.updateInvalidMark,
		replace:this.updateInvalidMark
		});
	Ext.form.CompositeField.superclass.initComponent.apply(this,arguments);
	this.innerCt=new Ext.Container({
		layout:"hbox",
		items:this.items,
		cls:"x-form-composite",
		defaultMargins:"0 3 0 0",
		ownerCt:this
	});
	this.innerCt.ownerCt=undefined;
	var a=this.innerCt.findBy(function(h){
		return h.isFormField
		},this);
	this.items=new Ext.util.MixedCollection();
	this.items.addAll(a)
	},
onRender:function(c,a){
	if(!this.el){
		var d=this.innerCt;
		d.render(c);
		this.el=d.getEl();
		if(this.combineErrors){
			this.eachItem(function(e){
				Ext.apply(e,{
					markInvalid:this.onFieldMarkInvalid.createDelegate(this,[e],0),
					clearInvalid:this.onFieldClearInvalid.createDelegate(this,[e],0)
					})
				})
			}
			var b=this.el.parent().parent().child("label",true);
		if(b){
			b.setAttribute("for",this.items.items[0].id)
			}
		}
	Ext.form.CompositeField.superclass.onRender.apply(this,arguments)
	},
onFieldMarkInvalid:function(d,c){
	var b=d.getName(),a={
		field:b,
		errorName:d.fieldLabel||b,
		error:c
	};

	this.fieldErrors.replace(b,a);
	d.el.addClass(d.invalidClass)
	},
onFieldClearInvalid:function(a){
	this.fieldErrors.removeKey(a.getName());
	a.el.removeClass(a.invalidClass)
	},
updateInvalidMark:function(){
	var a=Ext.isIE6&&Ext.isStrict;
	if(this.fieldErrors.length==0){
		this.clearInvalid();
		if(a){
			this.clearInvalid.defer(50,this)
			}
		}else{
	var b=this.buildCombinedErrorMessage(this.fieldErrors.items);
	this.sortErrors();
	this.markInvalid(b);
	if(a){
		this.markInvalid(b)
		}
	}
},
validateValue:function(){
	var a=true;
	this.eachItem(function(b){
		if(!b.isValid()){
			a=false
			}
		});
return a
},
buildCombinedErrorMessage:function(e){
	var d=[],b;
	for(var c=0,a=e.length;c<a;c++){
		b=e[c];
		d.push(String.format("{0}: {1}",b.errorName,b.error))
		}
		return d.join("<br />")
	},
sortErrors:function(){
	var a=this.items;
	this.fieldErrors.sort("ASC",function(g,d){
		var c=function(b){
			return function(i){
				return i.getName()==b
				}
			};

	var h=a.findIndexBy(c(g.field)),e=a.findIndexBy(c(d.field));
		return h<e?-1:1
		})
},
reset:function(){
	this.eachItem(function(a){
		a.reset()
		});
	(function(){
		this.clearInvalid()
		}).defer(50,this)
	},
clearInvalidChildren:function(){
	this.eachItem(function(a){
		a.clearInvalid()
		})
	},
buildLabel:function(a){
	return Ext.clean(a).join(this.labelConnector)
	},
isDirty:function(){
	if(this.disabled||!this.rendered){
		return false
		}
		var a=false;
	this.eachItem(function(b){
		if(b.isDirty()){
			a=true;
			return false
			}
		});
return a
},
eachItem:function(b,a){
	if(this.items&&this.items.each){
		this.items.each(b,a||this)
		}
	},
onResize:function(e,c,a,d){
	var b=this.innerCt;
	if(this.rendered&&b.rendered){
		b.setSize(e,c)
		}
		Ext.form.CompositeField.superclass.onResize.apply(this,arguments)
	},
doLayout:function(c,b){
	if(this.rendered){
		var a=this.innerCt;
		a.forceLayout=this.ownerCt.forceLayout;
		a.doLayout(c,b)
		}
	},
beforeDestroy:function(){
	Ext.destroy(this.innerCt);
	Ext.form.CompositeField.superclass.beforeDestroy.call(this)
	},
setReadOnly:function(a){
	if(a==undefined){
		a=true
		}
		a=!!a;
	if(this.rendered){
		this.eachItem(function(b){
			b.setReadOnly(a)
			})
		}
		this.readOnly=a
	},
onShow:function(){
	Ext.form.CompositeField.superclass.onShow.call(this);
	this.doLayout()
	},
onDisable:function(){
	this.eachItem(function(a){
		a.disable()
		})
	},
onEnable:function(){
	this.eachItem(function(a){
		a.enable()
		})
	}
});
Ext.reg("compositefield",Ext.form.CompositeField);
Ext.form.Radio=Ext.extend(Ext.form.Checkbox,{
	inputType:"radio",
	markInvalid:Ext.emptyFn,
	clearInvalid:Ext.emptyFn,
	getGroupValue:function(){
		var a=this.el.up("form")||Ext.getBody();
		var b=a.child("input[name="+this.el.dom.name+"]:checked",true);
		return b?b.value:null
		},
	setValue:function(b){
		var a,d,c;
		if(typeof b=="boolean"){
			Ext.form.Radio.superclass.setValue.call(this,b)
			}else{
			if(this.rendered){
				a=this.getCheckEl();
				c=a.child("input[name="+this.el.dom.name+"][value="+b+"]",true);
				if(c){
					Ext.getCmp(c.id).setValue(true)
					}
				}
		}
	if(this.rendered&&this.checked){
	a=a||this.getCheckEl();
	d=this.getCheckEl().select("input[name="+this.el.dom.name+"]");
	d.each(function(e){
		if(e.dom.id!=this.id){
			Ext.getCmp(e.dom.id).setValue(false)
			}
		},this)
}
return this
},
getCheckEl:function(){
	if(this.inGroup){
		return this.el.up(".x-form-radio-group")
		}
		return this.el.up("form")||Ext.getBody()
	}
});
Ext.reg("radio",Ext.form.Radio);
Ext.form.RadioGroup=Ext.extend(Ext.form.CheckboxGroup,{
	allowBlank:true,
	blankText:"You must select one item in this group",
	defaultType:"radio",
	groupCls:"x-form-radio-group",
	getValue:function(){
		var a=null;
		this.eachItem(function(b){
			if(b.checked){
				a=b;
				return false
				}
			});
	return a
	},
onSetValue:function(c,b){
	if(arguments.length>1){
		var a=this.getBox(c);
		if(a){
			a.setValue(b);
			if(a.checked){
				this.eachItem(function(d){
					if(d!==a){
						d.setValue(false)
						}
					})
			}
		}
}else{
	this.setValueForItem(c)
	}
},
setValueForItem:function(a){
	a=String(a).split(",")[0];
	this.eachItem(function(b){
		b.setValue(a==b.inputValue)
		})
	},
fireChecked:function(){
	if(!this.checkTask){
		this.checkTask=new Ext.util.DelayedTask(this.bufferChecked,this)
		}
		this.checkTask.delay(10)
	},
bufferChecked:function(){
	var a=null;
	this.eachItem(function(b){
		if(b.checked){
			a=b;
			return false
			}
		});
this.fireEvent("change",this,a)
},
onDestroy:function(){
	if(this.checkTask){
		this.checkTask.cancel();
		this.checkTask=null
		}
		Ext.form.RadioGroup.superclass.onDestroy.call(this)
	}
});
Ext.reg("radiogroup",Ext.form.RadioGroup);
Ext.form.Hidden=Ext.extend(Ext.form.Field,{
	inputType:"hidden",
	shouldLayout:false,
	onRender:function(){
		Ext.form.Hidden.superclass.onRender.apply(this,arguments)
		},
	initEvents:function(){
		this.originalValue=this.getValue()
		},
	setSize:Ext.emptyFn,
	setWidth:Ext.emptyFn,
	setHeight:Ext.emptyFn,
	setPosition:Ext.emptyFn,
	setPagePosition:Ext.emptyFn,
	markInvalid:Ext.emptyFn,
	clearInvalid:Ext.emptyFn
	});
Ext.reg("hidden",Ext.form.Hidden);
Ext.form.BasicForm=Ext.extend(Ext.util.Observable,{
	constructor:function(b,a){
		Ext.apply(this,a);
		if(Ext.isString(this.paramOrder)){
			this.paramOrder=this.paramOrder.split(/[\s,|]/)
			}
			this.items=new Ext.util.MixedCollection(false,function(c){
			return c.getItemId()
			});
		this.addEvents("beforeaction","actionfailed","actioncomplete");
		if(b){
			this.initEl(b)
			}
			Ext.form.BasicForm.superclass.constructor.call(this)
		},
	timeout:30,
	paramOrder:undefined,
	paramsAsHash:false,
	waitTitle:"Please Wait...",
	activeAction:null,
	trackResetOnLoad:false,
	initEl:function(a){
		this.el=Ext.get(a);
		this.id=this.el.id||Ext.id();
		if(!this.standardSubmit){
			this.el.on("submit",this.onSubmit,this)
			}
			this.el.addClass("x-form")
		},
	getEl:function(){
		return this.el
		},
	onSubmit:function(a){
		a.stopEvent()
		},
	destroy:function(a){
		if(a!==true){
			this.items.each(function(b){
				Ext.destroy(b)
				});
			Ext.destroy(this.el)
			}
			this.items.clear();
		this.purgeListeners()
		},
	isValid:function(){
		var a=true;
		this.items.each(function(b){
			if(!b.validate()){
				a=false
				}
			});
	return a
	},
isDirty:function(){
	var a=false;
	this.items.each(function(b){
		if(b.isDirty()){
			a=true;
			return false
			}
		});
return a
},
doAction:function(b,a){
	if(Ext.isString(b)){
		b=new Ext.form.Action.ACTION_TYPES[b](this,a)
		}
		if(this.fireEvent("beforeaction",this,b)!==false){
		this.beforeAction(b);
		b.run.defer(100,b)
		}
		return this
	},
submit:function(b){
	b=b||{};

	if(this.standardSubmit){
		var a=b.clientValidation===false||this.isValid();
		if(a){
			var c=this.el.dom;
			if(this.url&&Ext.isEmpty(c.action)){
				c.action=this.url
				}
				c.submit()
			}
			return a
		}
		var d=String.format("{0}submit",this.api?"direct":"");
	this.doAction(d,b);
	return this
	},
load:function(a){
	var b=String.format("{0}load",this.api?"direct":"");
	this.doAction(b,a);
	return this
	},
updateRecord:function(b){
	b.beginEdit();
	var a=b.fields,d,c;
	a.each(function(e){
		d=this.findField(e.name);
		if(d){
			c=d.getValue();
			if(typeof c!=undefined&&c.getGroupValue){
				c=c.getGroupValue()
				}else{
				if(d.eachItem){
					c=[];
					d.eachItem(function(g){
						c.push(g.getValue())
						})
					}
				}
			b.set(e.name,c)
		}
	},this);
b.endEdit();
return this
},
loadRecord:function(a){
	this.setValues(a.data);
	return this
	},
beforeAction:function(a){
	this.items.each(function(c){
		if(c.isFormField&&c.syncValue){
			c.syncValue()
			}
		});
var b=a.options;
if(b.waitMsg){
	if(this.waitMsgTarget===true){
		this.el.mask(b.waitMsg,"x-mask-loading")
		}else{
		if(this.waitMsgTarget){
			this.waitMsgTarget=Ext.get(this.waitMsgTarget);
			this.waitMsgTarget.mask(b.waitMsg,"x-mask-loading")
			}else{
			Ext.MessageBox.wait(b.waitMsg,b.waitTitle||this.waitTitle)
			}
		}
}
},
afterAction:function(a,c){
	this.activeAction=null;
	var b=a.options;
	if(b.waitMsg){
		if(this.waitMsgTarget===true){
			this.el.unmask()
			}else{
			if(this.waitMsgTarget){
				this.waitMsgTarget.unmask()
				}else{
				Ext.MessageBox.updateProgress(1);
				Ext.MessageBox.hide()
				}
			}
	}
if(c){
	if(b.reset){
		this.reset()
		}
		Ext.callback(b.success,b.scope,[this,a]);
	this.fireEvent("actioncomplete",this,a)
	}else{
	Ext.callback(b.failure,b.scope,[this,a]);
	this.fireEvent("actionfailed",this,a)
	}
},
findField:function(c){
	var b=this.items.get(c);
	if(!Ext.isObject(b)){
		var a=function(d){
			if(d.isFormField){
				if(d.dataIndex==c||d.id==c||d.getName()==c){
					b=d;
					return false
					}else{
					if(d.isComposite){
						return d.items.each(a)
						}else{
						if(d instanceof Ext.form.CheckboxGroup&&d.rendered){
							return d.eachItem(a)
							}
						}
				}
		}
};

this.items.each(a)
}
return b||null
},
markInvalid:function(h){
	if(Ext.isArray(h)){
		for(var c=0,a=h.length;c<a;c++){
			var b=h[c];
			var d=this.findField(b.id);
			if(d){
				d.markInvalid(b.msg)
				}
			}
		}else{
	var e,g;
	for(g in h){
		if(!Ext.isFunction(h[g])&&(e=this.findField(g))){
			e.markInvalid(h[g])
			}
		}
	}
	return this
},
setValues:function(c){
	if(Ext.isArray(c)){
		for(var d=0,a=c.length;d<a;d++){
			var b=c[d];
			var e=this.findField(b.id);
			if(e){
				e.setValue(b.value);
				if(this.trackResetOnLoad){
					e.originalValue=e.getValue()
					}
				}
		}
	}else{
	var g,h;
	for(h in c){
		if(!Ext.isFunction(c[h])&&(g=this.findField(h))){
			g.setValue(c[h]);
			if(this.trackResetOnLoad){
				g.originalValue=g.getValue()
				}
			}
	}
	}
return this
},
getValues:function(b){
	var a=Ext.lib.Ajax.serializeForm(this.el.dom);
	if(b===true){
		return a
		}
		return Ext.urlDecode(a)
	},
getFieldValues:function(a){
	var d={},e,b,c;
	this.items.each(function(g){
		if(!g.disabled&&(a!==true||g.isDirty())){
			e=g.getName();
			b=d[e];
			c=g.getValue();
			if(Ext.isDefined(b)){
				if(Ext.isArray(b)){
					d[e].push(c)
					}else{
					d[e]=[b,c]
					}
				}else{
			d[e]=c
			}
		}
	});
return d
},
clearInvalid:function(){
	this.items.each(function(a){
		a.clearInvalid()
		});
	return this
	},
reset:function(){
	this.items.each(function(a){
		a.reset()
		});
	return this
	},
add:function(){
	this.items.addAll(Array.prototype.slice.call(arguments,0));
	return this
	},
remove:function(a){
	this.items.remove(a);
	return this
	},
cleanDestroyed:function(){
	this.items.filterBy(function(a){
		return !!a.isDestroyed
		}).each(this.remove,this)
	},
render:function(){
	this.items.each(function(a){
		if(a.isFormField&&!a.rendered&&document.getElementById(a.id)){
			a.applyToMarkup(a.id)
			}
		});
return this
},
applyToFields:function(a){
	this.items.each(function(b){
		Ext.apply(b,a)
		});
	return this
	},
applyIfToFields:function(a){
	this.items.each(function(b){
		Ext.applyIf(b,a)
		});
	return this
	},
callFieldMethod:function(b,a){
	a=a||[];
	this.items.each(function(c){
		if(Ext.isFunction(c[b])){
			c[b].apply(c,a)
			}
		});
return this
}
});
Ext.BasicForm=Ext.form.BasicForm;
Ext.FormPanel=Ext.extend(Ext.Panel,{
	minButtonWidth:75,
	labelAlign:"left",
	monitorValid:false,
	monitorPoll:200,
	layout:"form",
	initComponent:function(){
		this.form=this.createForm();
		Ext.FormPanel.superclass.initComponent.call(this);
		this.bodyCfg={
			tag:"form",
			cls:this.baseCls+"-body",
			method:this.method||"POST",
			id:this.formId||Ext.id()
			};

		if(this.fileUpload){
			this.bodyCfg.enctype="multipart/form-data"
			}
			this.initItems();
		this.addEvents("clientvalidation");
		this.relayEvents(this.form,["beforeaction","actionfailed","actioncomplete"])
		},
	createForm:function(){
		var a=Ext.applyIf({
			listeners:{}
		},this.initialConfig);
	return new Ext.form.BasicForm(null,a)
	},
initFields:function(){
	var c=this.form;
	var a=this;
	var b=function(d){
		if(a.isField(d)){
			c.add(d)
			}else{
			if(d.findBy&&d!=a){
				a.applySettings(d);
				if(d.items&&d.items.each){
					d.items.each(b,this)
					}
				}
		}
};

this.items.each(b,this)
},
applySettings:function(b){
	var a=b.ownerCt;
	Ext.applyIf(b,{
		labelAlign:a.labelAlign,
		labelWidth:a.labelWidth,
		itemCls:a.itemCls
		})
	},
getLayoutTarget:function(){
	return this.form.el
	},
getForm:function(){
	return this.form
	},
onRender:function(b,a){
	this.initFields();
	Ext.FormPanel.superclass.onRender.call(this,b,a);
	this.form.initEl(this.body)
	},
beforeDestroy:function(){
	this.stopMonitoring();
	this.form.destroy(true);
	Ext.FormPanel.superclass.beforeDestroy.call(this)
	},
isField:function(a){
	return !!a.setValue&&!!a.getValue&&!!a.markInvalid&&!!a.clearInvalid
	},
initEvents:function(){
	Ext.FormPanel.superclass.initEvents.call(this);
	this.on({
		scope:this,
		add:this.onAddEvent,
		remove:this.onRemoveEvent
		});
	if(this.monitorValid){
		this.startMonitoring()
		}
	},
onAdd:function(a){
	Ext.FormPanel.superclass.onAdd.call(this,a);
	this.processAdd(a)
	},
onAddEvent:function(a,b){
	if(a!==this){
		this.processAdd(b)
		}
	},
processAdd:function(a){
	if(this.isField(a)){
		this.form.add(a)
		}else{
		if(a.findBy){
			this.applySettings(a);
			this.form.add.apply(this.form,a.findBy(this.isField))
			}
		}
},
onRemove:function(a){
	Ext.FormPanel.superclass.onRemove.call(this,a);
	this.processRemove(a)
	},
onRemoveEvent:function(a,b){
	if(a!==this){
		this.processRemove(b)
		}
	},
processRemove:function(a){
	if(!this.destroying){
		if(this.isField(a)){
			this.form.remove(a)
			}else{
			if(a.findBy){
				Ext.each(a.findBy(this.isField),this.form.remove,this.form);
				this.form.cleanDestroyed()
				}
			}
	}
},
startMonitoring:function(){
	if(!this.validTask){
		this.validTask=new Ext.util.TaskRunner();
		this.validTask.start({
			run:this.bindHandler,
			interval:this.monitorPoll||200,
			scope:this
		})
		}
	},
stopMonitoring:function(){
	if(this.validTask){
		this.validTask.stopAll();
		this.validTask=null
		}
	},
load:function(){
	this.form.load.apply(this.form,arguments)
	},
onDisable:function(){
	Ext.FormPanel.superclass.onDisable.call(this);
	if(this.form){
		this.form.items.each(function(){
			this.disable()
			})
		}
	},
onEnable:function(){
	Ext.FormPanel.superclass.onEnable.call(this);
	if(this.form){
		this.form.items.each(function(){
			this.enable()
			})
		}
	},
bindHandler:function(){
	var e=true;
	this.form.items.each(function(g){
		if(!g.isValid(true)){
			e=false;
			return false
			}
		});
if(this.fbar){
	var b=this.fbar.items.items;
	for(var d=0,a=b.length;d<a;d++){
		var c=b[d];
		if(c.formBind===true&&c.disabled===e){
			c.setDisabled(!e)
			}
		}
	}
this.fireEvent("clientvalidation",this,e)
}
});
Ext.reg("form",Ext.FormPanel);
Ext.form.FormPanel=Ext.FormPanel;
Ext.form.FieldSet=Ext.extend(Ext.Panel,{
	baseCls:"x-fieldset",
	layout:"form",
	animCollapse:false,
	onRender:function(b,a){
		if(!this.el){
			this.el=document.createElement("fieldset");
			this.el.id=this.id;
			if(this.title||this.header||this.checkboxToggle){
				this.el.appendChild(document.createElement("legend")).className=this.baseCls+"-header"
				}
			}
		Ext.form.FieldSet.superclass.onRender.call(this,b,a);
	if(this.checkboxToggle){
		var c=typeof this.checkboxToggle=="object"?this.checkboxToggle:{
			tag:"input",
			type:"checkbox",
			name:this.checkboxName||this.id+"-checkbox"
			};

		this.checkbox=this.header.insertFirst(c);
		this.checkbox.dom.checked=!this.collapsed;
		this.mon(this.checkbox,"click",this.onCheckClick,this)
		}
	},
onCollapse:function(a,b){
	if(this.checkbox){
		this.checkbox.dom.checked=false
		}
		Ext.form.FieldSet.superclass.onCollapse.call(this,a,b)
	},
onExpand:function(a,b){
	if(this.checkbox){
		this.checkbox.dom.checked=true
		}
		Ext.form.FieldSet.superclass.onExpand.call(this,a,b)
	},
onCheckClick:function(){
	this[this.checkbox.dom.checked?"expand":"collapse"]()
	}
});
Ext.reg("fieldset",Ext.form.FieldSet);
Ext.form.HtmlEditor=Ext.extend(Ext.form.Field,{
	enableFormat:true,
	enableFontSize:true,
	enableColors:true,
	enableAlignments:true,
	enableLists:true,
	enableSourceEdit:true,
	enableLinks:true,
	enableFont:true,
	createLinkText:"Please enter the URL for the link:",
	defaultLinkValue:"http://",
	fontFamilies:["Arial","Courier New","Tahoma","Times New Roman","Verdana"],
	defaultFont:"tahoma",
	defaultValue:(Ext.isOpera||Ext.isIE6)?"&#160;":"&#8203;",
	actionMode:"wrap",
	validationEvent:false,
	deferHeight:true,
	initialized:false,
	activated:false,
	sourceEditMode:false,
	onFocus:Ext.emptyFn,
	iframePad:3,
	hideMode:"offsets",
	defaultAutoCreate:{
		tag:"textarea",
		style:"width:500px;height:300px;",
		autocomplete:"off"
	},
	initComponent:function(){
		this.addEvents("initialize","activate","beforesync","beforepush","sync","push","editmodechange");
		Ext.form.HtmlEditor.superclass.initComponent.call(this)
		},
	createFontOptions:function(){
		var d=[],b=this.fontFamilies,c,g;
		for(var e=0,a=b.length;e<a;e++){
			c=b[e];
			g=c.toLowerCase();
			d.push('<option value="',g,'" style="font-family:',c,';"',(this.defaultFont==g?' selected="true">':">"),c,"</option>")
			}
			return d.join("")
		},
	createToolbar:function(e){
		var c=[];
		var a=Ext.QuickTips&&Ext.QuickTips.isEnabled();
		function d(k,h,i){
			return{
				itemId:k,
				cls:"x-btn-icon",
				iconCls:"x-edit-"+k,
				enableToggle:h!==false,
				scope:e,
				handler:i||e.relayBtnCmd,
				clickEvent:"mousedown",
				tooltip:a?e.buttonTips[k]||undefined:undefined,
				overflowText:e.buttonTips[k].title||undefined,
				tabIndex:-1
			}
		}
		if(this.enableFont&&!Ext.isSafari2){
		var g=new Ext.Toolbar.Item({
			autoEl:{
				tag:"select",
				cls:"x-font-select",
				html:this.createFontOptions()
				}
			});
	c.push(g,"-")
	}
	if(this.enableFormat){
	c.push(d("bold"),d("italic"),d("underline"))
	}
	if(this.enableFontSize){
	c.push("-",d("increasefontsize",false,this.adjustFont),d("decreasefontsize",false,this.adjustFont))
	}
	if(this.enableColors){
	c.push("-",{
		itemId:"forecolor",
		cls:"x-btn-icon",
		iconCls:"x-edit-forecolor",
		clickEvent:"mousedown",
		tooltip:a?e.buttonTips.forecolor||undefined:undefined,
		tabIndex:-1,
		menu:new Ext.menu.ColorMenu({
			allowReselect:true,
			focus:Ext.emptyFn,
			value:"000000",
			plain:true,
			listeners:{
				scope:this,
				select:function(i,h){
					this.execCmd("forecolor",Ext.isWebKit||Ext.isIE?"#"+h:h);
					this.deferFocus()
					}
				},
		clickEvent:"mousedown"
		})
	},{
		itemId:"backcolor",
		cls:"x-btn-icon",
		iconCls:"x-edit-backcolor",
		clickEvent:"mousedown",
		tooltip:a?e.buttonTips.backcolor||undefined:undefined,
		tabIndex:-1,
		menu:new Ext.menu.ColorMenu({
			focus:Ext.emptyFn,
			value:"FFFFFF",
			plain:true,
			allowReselect:true,
			listeners:{
				scope:this,
				select:function(i,h){
					if(Ext.isGecko){
						this.execCmd("useCSS",false);
						this.execCmd("hilitecolor",h);
						this.execCmd("useCSS",true);
						this.deferFocus()
						}else{
						this.execCmd(Ext.isOpera?"hilitecolor":"backcolor",Ext.isWebKit||Ext.isIE?"#"+h:h);
						this.deferFocus()
						}
					}
			},
		clickEvent:"mousedown"
	})
})
}
if(this.enableAlignments){
	c.push("-",d("justifyleft"),d("justifycenter"),d("justifyright"))
	}
	if(!Ext.isSafari2){
	if(this.enableLinks){
		c.push("-",d("createlink",false,this.createLink))
		}
		if(this.enableLists){
		c.push("-",d("insertorderedlist"),d("insertunorderedlist"))
		}
		if(this.enableSourceEdit){
		c.push("-",d("sourceedit",true,function(h){
			this.toggleSourceEdit(!this.sourceEditMode)
			}))
		}
	}
var b=new Ext.Toolbar({
	renderTo:this.wrap.dom.firstChild,
	items:c
});
if(g){
	this.fontSelect=g.el;
	this.mon(this.fontSelect,"change",function(){
		var h=this.fontSelect.dom.value;
		this.relayCmd("fontname",h);
		this.deferFocus()
		},this)
	}
	this.mon(b.el,"click",function(h){
	h.preventDefault()
	});
this.tb=b;
this.tb.doLayout()
},
onDisable:function(){
	this.wrap.mask();
	Ext.form.HtmlEditor.superclass.onDisable.call(this)
	},
onEnable:function(){
	this.wrap.unmask();
	Ext.form.HtmlEditor.superclass.onEnable.call(this)
	},
setReadOnly:function(b){
	Ext.form.HtmlEditor.superclass.setReadOnly.call(this,b);
	if(this.initialized){
		if(Ext.isIE){
			this.getEditorBody().contentEditable=!b
			}else{
			this.setDesignMode(!b)
			}
			var a=this.getEditorBody();
		if(a){
			a.style.cursor=this.readOnly?"default":"text"
			}
			this.disableItems(b)
		}
	},
getDocMarkup:function(){
	var a=Ext.fly(this.iframe).getHeight()-this.iframePad*2;
	return String.format('<html><head><style type="text/css">body{border: 0; margin: 0; padding: {0}px; height: {1}px; cursor: text}</style></head><body></body></html>',this.iframePad,a)
	},
getEditorBody:function(){
	var a=this.getDoc();
	return a.body||a.documentElement
	},
getDoc:function(){
	return Ext.isIE?this.getWin().document:(this.iframe.contentDocument||this.getWin().document)
	},
getWin:function(){
	return Ext.isIE?this.iframe.contentWindow:window.frames[this.iframe.name]
	},
onRender:function(b,a){
	Ext.form.HtmlEditor.superclass.onRender.call(this,b,a);
	this.el.dom.style.border="0 none";
	this.el.dom.setAttribute("tabIndex",-1);
	this.el.addClass("x-hidden");
	if(Ext.isIE){
		this.el.applyStyles("margin-top:-1px;margin-bottom:-1px;")
		}
		this.wrap=this.el.wrap({
		cls:"x-html-editor-wrap",
		cn:{
			cls:"x-html-editor-tb"
		}
	});
this.createToolbar(this);
this.disableItems(true);
this.tb.doLayout();
this.createIFrame();
if(!this.width){
	var c=this.el.getSize();
	this.setSize(c.width,this.height||c.height)
	}
	this.resizeEl=this.positionEl=this.wrap
},
createIFrame:function(){
	var a=document.createElement("iframe");
	a.name=Ext.id();
	a.frameBorder="0";
	a.style.overflow="auto";
	a.src=Ext.SSL_SECURE_URL;
	this.wrap.dom.appendChild(a);
	this.iframe=a;
	this.monitorTask=Ext.TaskMgr.start({
		run:this.checkDesignMode,
		scope:this,
		interval:100
	})
	},
initFrame:function(){
	Ext.TaskMgr.stop(this.monitorTask);
	var b=this.getDoc();
	this.win=this.getWin();
	b.open();
	b.write(this.getDocMarkup());
	b.close();
	var a={
		run:function(){
			var c=this.getDoc();
			if(c.body||c.readyState=="complete"){
				Ext.TaskMgr.stop(a);
				this.setDesignMode(true);
				this.initEditor.defer(10,this)
				}
			},
	interval:10,
	duration:10000,
	scope:this
};

Ext.TaskMgr.start(a)
},
checkDesignMode:function(){
	if(this.wrap&&this.wrap.dom.offsetWidth){
		var a=this.getDoc();
		if(!a){
			return
		}
		if(!a.editorInitialized||this.getDesignMode()!="on"){
			this.initFrame()
			}
		}
},
setDesignMode:function(b){
	var a=this.getDoc();
	if(a){
		if(this.readOnly){
			b=false
			}
			a.designMode=(/on|true/i).test(String(b).toLowerCase())?"on":"off"
		}
	},
getDesignMode:function(){
	var a=this.getDoc();
	if(!a){
		return""
		}
		return String(a.designMode).toLowerCase()
	},
disableItems:function(a){
	if(this.fontSelect){
		this.fontSelect.dom.disabled=a
		}
		this.tb.items.each(function(b){
		if(b.getItemId()!="sourceedit"){
			b.setDisabled(a)
			}
		})
},
onResize:function(b,c){
	Ext.form.HtmlEditor.superclass.onResize.apply(this,arguments);
	if(this.el&&this.iframe){
		if(Ext.isNumber(b)){
			var e=b-this.wrap.getFrameWidth("lr");
			this.el.setWidth(e);
			this.tb.setWidth(e);
			this.iframe.style.width=Math.max(e,0)+"px"
			}
			if(Ext.isNumber(c)){
			var a=c-this.wrap.getFrameWidth("tb")-this.tb.el.getHeight();
			this.el.setHeight(a);
			this.iframe.style.height=Math.max(a,0)+"px";
			var d=this.getEditorBody();
			if(d){
				d.style.height=Math.max((a-(this.iframePad*2)),0)+"px"
				}
			}
	}
},
toggleSourceEdit:function(b){
	var d,a;
	if(b===undefined){
		b=!this.sourceEditMode
		}
		this.sourceEditMode=b===true;
	var c=this.tb.getComponent("sourceedit");
	if(c.pressed!==this.sourceEditMode){
		c.toggle(this.sourceEditMode);
		if(!c.xtbHidden){
			return
		}
	}
	if(this.sourceEditMode){
	this.previousSize=this.getSize();
	d=Ext.get(this.iframe).getHeight();
	this.disableItems(true);
	this.syncValue();
	this.iframe.className="x-hidden";
	this.el.removeClass("x-hidden");
	this.el.dom.removeAttribute("tabIndex");
	this.el.focus();
	this.el.dom.style.height=d+"px"
	}else{
	a=parseInt(this.el.dom.style.height,10);
	if(this.initialized){
		this.disableItems(this.readOnly)
		}
		this.pushValue();
	this.iframe.className="";
	this.el.addClass("x-hidden");
	this.el.dom.setAttribute("tabIndex",-1);
	this.deferFocus();
	this.setSize(this.previousSize);
	delete this.previousSize;
	this.iframe.style.height=a+"px"
	}
	this.fireEvent("editmodechange",this,this.sourceEditMode)
},
createLink:function(){
	var a=prompt(this.createLinkText,this.defaultLinkValue);
	if(a&&a!="http://"){
		this.relayCmd("createlink",a)
		}
	},
initEvents:function(){
	this.originalValue=this.getValue()
	},
markInvalid:Ext.emptyFn,
clearInvalid:Ext.emptyFn,
setValue:function(a){
	Ext.form.HtmlEditor.superclass.setValue.call(this,a);
	this.pushValue();
	return this
	},
cleanHtml:function(a){
	a=String(a);
	if(Ext.isWebKit){
		a=a.replace(/\sclass="(?:Apple-style-span|khtml-block-placeholder)"/gi,"")
		}
		if(a.charCodeAt(0)==this.defaultValue.replace(/\D/g,"")){
		a=a.substring(1)
		}
		return a
	},
syncValue:function(){
	if(this.initialized){
		var d=this.getEditorBody();
		var c=d.innerHTML;
		if(Ext.isWebKit){
			var b=d.getAttribute("style");
			var a=b.match(/text-align:(.*?);/i);
			if(a&&a[1]){
				c='<div style="'+a[0]+'">'+c+"</div>"
				}
			}
		c=this.cleanHtml(c);
	if(this.fireEvent("beforesync",this,c)!==false){
		this.el.dom.value=c;
		this.fireEvent("sync",this,c)
		}
	}
},
getValue:function(){
	this[this.sourceEditMode?"pushValue":"syncValue"]();
	return Ext.form.HtmlEditor.superclass.getValue.call(this)
	},
pushValue:function(){
	if(this.initialized){
		var a=this.el.dom.value;
		if(!this.activated&&a.length<1){
			a=this.defaultValue
			}
			if(this.fireEvent("beforepush",this,a)!==false){
			this.getEditorBody().innerHTML=a;
			if(Ext.isGecko){
				this.setDesignMode(false);
				this.setDesignMode(true)
				}
				this.fireEvent("push",this,a)
			}
		}
},
deferFocus:function(){
	this.focus.defer(10,this)
	},
focus:function(){
	if(this.win&&!this.sourceEditMode){
		this.win.focus()
		}else{
		this.el.focus()
		}
	},
initEditor:function(){
	try{
		var c=this.getEditorBody(),a=this.el.getStyles("font-size","font-family","background-image","background-repeat","background-color","color"),g,b;
		a["background-attachment"]="fixed";
		c.bgProperties="fixed";
		Ext.DomHelper.applyStyles(c,a);
		g=this.getDoc();
		if(g){
			try{
				Ext.EventManager.removeAll(g)
				}catch(d){}
		}
		b=this.onEditorEvent.createDelegate(this);
	Ext.EventManager.on(g,{
		mousedown:b,
		dblclick:b,
		click:b,
		keyup:b,
		buffer:100
	});
	if(Ext.isGecko){
		Ext.EventManager.on(g,"keypress",this.applyCommand,this)
		}
		if(Ext.isIE||Ext.isWebKit||Ext.isOpera){
		Ext.EventManager.on(g,"keydown",this.fixKeys,this)
		}
		g.editorInitialized=true;
	this.initialized=true;
	this.pushValue();
	this.setReadOnly(this.readOnly);
	this.fireEvent("initialize",this)
	}catch(d){}
},
beforeDestroy:function(){
	if(this.monitorTask){
		Ext.TaskMgr.stop(this.monitorTask)
		}
		if(this.rendered){
		Ext.destroy(this.tb);
		var b=this.getDoc();
		if(b){
			try{
				Ext.EventManager.removeAll(b);
				for(var c in b){
					delete b[c]
				}
				}catch(a){}
	}
	if(this.wrap){
	this.wrap.dom.innerHTML="";
	this.wrap.remove()
	}
}
Ext.form.HtmlEditor.superclass.beforeDestroy.call(this)
},
onFirstFocus:function(){
	this.activated=true;
	this.disableItems(this.readOnly);
	if(Ext.isGecko){
		this.win.focus();
		var a=this.win.getSelection();
		if(!a.focusNode||a.focusNode.nodeType!=3){
			var b=a.getRangeAt(0);
			b.selectNodeContents(this.getEditorBody());
			b.collapse(true);
			this.deferFocus()
			}
			try{
			this.execCmd("useCSS",true);
			this.execCmd("styleWithCSS",false)
			}catch(c){}
	}
	this.fireEvent("activate",this)
},
adjustFont:function(b){
	var d=b.getItemId()=="increasefontsize"?1:-1,c=this.getDoc(),a=parseInt(c.queryCommandValue("FontSize")||2,10);
	if((Ext.isSafari&&!Ext.isSafari2)||Ext.isChrome||Ext.isAir){
		if(a<=10){
			a=1+d
			}else{
			if(a<=13){
				a=2+d
				}else{
				if(a<=16){
					a=3+d
					}else{
					if(a<=18){
						a=4+d
						}else{
						if(a<=24){
							a=5+d
							}else{
							a=6+d
							}
						}
				}
		}
}
a=a.constrain(1,6)
}else{
	if(Ext.isSafari){
		d*=2
		}
		a=Math.max(1,a+d)+(Ext.isSafari?"px":0)
	}
	this.execCmd("FontSize",a)
},
onEditorEvent:function(a){
	this.updateToolbar()
	},
updateToolbar:function(){
	if(this.readOnly){
		return
	}
	if(!this.activated){
		this.onFirstFocus();
		return
	}
	var b=this.tb.items.map,c=this.getDoc();
	if(this.enableFont&&!Ext.isSafari2){
		var a=(c.queryCommandValue("FontName")||this.defaultFont).toLowerCase();
		if(a!=this.fontSelect.dom.value){
			this.fontSelect.dom.value=a
			}
		}
	if(this.enableFormat){
	b.bold.toggle(c.queryCommandState("bold"));
	b.italic.toggle(c.queryCommandState("italic"));
	b.underline.toggle(c.queryCommandState("underline"))
	}
	if(this.enableAlignments){
	b.justifyleft.toggle(c.queryCommandState("justifyleft"));
	b.justifycenter.toggle(c.queryCommandState("justifycenter"));
	b.justifyright.toggle(c.queryCommandState("justifyright"))
	}
	if(!Ext.isSafari2&&this.enableLists){
	b.insertorderedlist.toggle(c.queryCommandState("insertorderedlist"));
	b.insertunorderedlist.toggle(c.queryCommandState("insertunorderedlist"))
	}
	Ext.menu.MenuMgr.hideAll();
this.syncValue()
},
relayBtnCmd:function(a){
	this.relayCmd(a.getItemId())
	},
relayCmd:function(b,a){
	(function(){
		this.focus();
		this.execCmd(b,a);
		this.updateToolbar()
		}).defer(10,this)
	},
execCmd:function(b,a){
	var c=this.getDoc();
	c.execCommand(b,false,a===undefined?null:a);
	this.syncValue()
	},
applyCommand:function(b){
	if(b.ctrlKey){
		var d=b.getCharCode(),a;
		if(d>0){
			d=String.fromCharCode(d);
			switch(d){
				case"b":
					a="bold";
					break;
				case"i":
					a="italic";
					break;
				case"u":
					a="underline";
					break
					}
					if(a){
				this.win.focus();
				this.execCmd(a);
				this.deferFocus();
				b.preventDefault()
				}
			}
	}
},
insertAtCursor:function(c){
	if(!this.activated){
		return
	}
	if(Ext.isIE){
		this.win.focus();
		var b=this.getDoc(),a=b.selection.createRange();
		if(a){
			a.pasteHTML(c);
			this.syncValue();
			this.deferFocus()
			}
		}else{
	this.win.focus();
	this.execCmd("InsertHTML",c);
	this.deferFocus()
	}
},
fixKeys:function(){
	if(Ext.isIE){
		return function(g){
			var a=g.getKey(),d=this.getDoc(),b;
			if(a==g.TAB){
				g.stopEvent();
				b=d.selection.createRange();
				if(b){
					b.collapse(true);
					b.pasteHTML("&nbsp;&nbsp;&nbsp;&nbsp;");
					this.deferFocus()
					}
				}else{
			if(a==g.ENTER){
				b=d.selection.createRange();
				if(b){
					var c=b.parentElement();
					if(!c||c.tagName.toLowerCase()!="li"){
						g.stopEvent();
						b.pasteHTML("<br />");
						b.collapse(false);
						b.select()
						}
					}
			}
	}
}
}else{
	if(Ext.isOpera){
		return function(b){
			var a=b.getKey();
			if(a==b.TAB){
				b.stopEvent();
				this.win.focus();
				this.execCmd("InsertHTML","&nbsp;&nbsp;&nbsp;&nbsp;");
				this.deferFocus()
				}
			}
	}else{
	if(Ext.isWebKit){
		return function(b){
			var a=b.getKey();
			if(a==b.TAB){
				b.stopEvent();
				this.execCmd("InsertText","\t");
				this.deferFocus()
				}else{
				if(a==b.ENTER){
					b.stopEvent();
					this.execCmd("InsertHtml","<br /><br />");
					this.deferFocus()
					}
				}
		}
}
}
}
}(),
getToolbar:function(){
	return this.tb
	},
buttonTips:{
	bold:{
		title:"Bold (Ctrl+B)",
		text:"Make the selected text bold.",
		cls:"x-html-editor-tip"
	},
	italic:{
		title:"Italic (Ctrl+I)",
		text:"Make the selected text italic.",
		cls:"x-html-editor-tip"
	},
	underline:{
		title:"Underline (Ctrl+U)",
		text:"Underline the selected text.",
		cls:"x-html-editor-tip"
	},
	increasefontsize:{
		title:"Grow Text",
		text:"Increase the font size.",
		cls:"x-html-editor-tip"
	},
	decreasefontsize:{
		title:"Shrink Text",
		text:"Decrease the font size.",
		cls:"x-html-editor-tip"
	},
	backcolor:{
		title:"Text Highlight Color",
		text:"Change the background color of the selected text.",
		cls:"x-html-editor-tip"
	},
	forecolor:{
		title:"Font Color",
		text:"Change the color of the selected text.",
		cls:"x-html-editor-tip"
	},
	justifyleft:{
		title:"Align Text Left",
		text:"Align text to the left.",
		cls:"x-html-editor-tip"
	},
	justifycenter:{
		title:"Center Text",
		text:"Center text in the editor.",
		cls:"x-html-editor-tip"
	},
	justifyright:{
		title:"Align Text Right",
		text:"Align text to the right.",
		cls:"x-html-editor-tip"
	},
	insertunorderedlist:{
		title:"Bullet List",
		text:"Start a bulleted list.",
		cls:"x-html-editor-tip"
	},
	insertorderedlist:{
		title:"Numbered List",
		text:"Start a numbered list.",
		cls:"x-html-editor-tip"
	},
	createlink:{
		title:"Hyperlink",
		text:"Make the selected text a hyperlink.",
		cls:"x-html-editor-tip"
	},
	sourceedit:{
		title:"Source Edit",
		text:"Switch to source editing mode.",
		cls:"x-html-editor-tip"
	}
}
});
Ext.reg("htmleditor",Ext.form.HtmlEditor);
Ext.form.TimeField=Ext.extend(Ext.form.ComboBox,{
	minValue:undefined,
	maxValue:undefined,
	minText:"The time in this field must be equal to or after {0}",
	maxText:"The time in this field must be equal to or before {0}",
	invalidText:"{0} is not a valid time",
	format:"g:i A",
	altFormats:"g:ia|g:iA|g:i a|g:i A|h:i|g:i|H:i|ga|ha|gA|h a|g a|g A|gi|hi|gia|hia|g|H|gi a|hi a|giA|hiA|gi A|hi A",
	increment:15,
	mode:"local",
	triggerAction:"all",
	typeAhead:false,
	initDate:"1/1/2008",
	initDateFormat:"j/n/Y",
	initComponent:function(){
		if(Ext.isDefined(this.minValue)){
			this.setMinValue(this.minValue,true)
			}
			if(Ext.isDefined(this.maxValue)){
			this.setMaxValue(this.maxValue,true)
			}
			if(!this.store){
			this.generateStore(true)
			}
			Ext.form.TimeField.superclass.initComponent.call(this)
		},
	setMinValue:function(b,a){
		this.setLimit(b,true,a);
		return this
		},
	setMaxValue:function(b,a){
		this.setLimit(b,false,a);
		return this
		},
	generateStore:function(b){
		var c=this.minValue||new Date(this.initDate).clearTime(),a=this.maxValue||new Date(this.initDate).clearTime().add("mi",(24*60)-1),d=[];
		while(c<=a){
			d.push(c.dateFormat(this.format));
			c=c.add("mi",this.increment)
			}
			this.bindStore(d,b)
		},
	setLimit:function(b,g,a){
		var e;
		if(Ext.isString(b)){
			e=this.parseDate(b)
			}else{
			if(Ext.isDate(b)){
				e=b
				}
			}
		if(e){
		var c=new Date(this.initDate).clearTime();
		c.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds());
		this[g?"minValue":"maxValue"]=c;
		if(!a){
			this.generateStore()
			}
		}
},
getValue:function(){
	var a=Ext.form.TimeField.superclass.getValue.call(this);
	return this.formatDate(this.parseDate(a))||""
	},
setValue:function(a){
	return Ext.form.TimeField.superclass.setValue.call(this,this.formatDate(this.parseDate(a)))
	},
validateValue:Ext.form.DateField.prototype.validateValue,
formatDate:Ext.form.DateField.prototype.formatDate,
parseDate:function(h){
	if(!h||Ext.isDate(h)){
		return h
		}
		var k=this.initDate+" ",g=this.initDateFormat+" ",b=Date.parseDate(k+h,g+this.format),c=this.altFormats;
	if(!b&&c){
		if(!this.altFormatsArray){
			this.altFormatsArray=c.split("|")
			}
			for(var e=0,d=this.altFormatsArray,a=d.length;e<a&&!b;e++){
			b=Date.parseDate(k+h,g+d[e])
			}
		}
		return b
}
});
Ext.reg("timefield",Ext.form.TimeField);
Ext.form.SliderField=Ext.extend(Ext.form.Field,{
	useTips:true,
	tipText:null,
	actionMode:"wrap",
	initComponent:function(){
		var b=Ext.copyTo({
			id:this.id+"-slider"
			},this.initialConfig,["vertical","minValue","maxValue","decimalPrecision","keyIncrement","increment","clickToChange","animate"]);
		if(this.useTips){
			var a=this.tipText?{
				getText:this.tipText
				}:{};

			b.plugins=[new Ext.slider.Tip(a)]
			}
			this.slider=new Ext.Slider(b);
		Ext.form.SliderField.superclass.initComponent.call(this)
		},
	onRender:function(b,a){
		this.autoCreate={
			id:this.id,
			name:this.name,
			type:"hidden",
			tag:"input"
		};

		Ext.form.SliderField.superclass.onRender.call(this,b,a);
		this.wrap=this.el.wrap({
			cls:"x-form-field-wrap"
		});
		this.resizeEl=this.positionEl=this.wrap;
		this.slider.render(this.wrap)
		},
	onResize:function(b,c,d,a){
		Ext.form.SliderField.superclass.onResize.call(this,b,c,d,a);
		this.slider.setSize(b,c)
		},
	initEvents:function(){
		Ext.form.SliderField.superclass.initEvents.call(this);
		this.slider.on("change",this.onChange,this)
		},
	onChange:function(b,a){
		this.setValue(a,undefined,true)
		},
	onEnable:function(){
		Ext.form.SliderField.superclass.onEnable.call(this);
		this.slider.enable()
		},
	onDisable:function(){
		Ext.form.SliderField.superclass.onDisable.call(this);
		this.slider.disable()
		},
	beforeDestroy:function(){
		Ext.destroy(this.slider);
		Ext.form.SliderField.superclass.beforeDestroy.call(this)
		},
	alignErrorIcon:function(){
		this.errorIcon.alignTo(this.slider.el,"tl-tr",[2,0])
		},
	setMinValue:function(a){
		this.slider.setMinValue(a);
		return this
		},
	setMaxValue:function(a){
		this.slider.setMaxValue(a);
		return this
		},
	setValue:function(c,b,a){
		if(!a){
			this.slider.setValue(c,b)
			}
			return Ext.form.SliderField.superclass.setValue.call(this,this.slider.getValue())
		},
	getValue:function(){
		return this.slider.getValue()
		}
	});
Ext.reg("sliderfield",Ext.form.SliderField);
Ext.form.Label=Ext.extend(Ext.BoxComponent,{
	onRender:function(b,a){
		if(!this.el){
			this.el=document.createElement("label");
			this.el.id=this.getId();
			this.el.innerHTML=this.text?Ext.util.Format.htmlEncode(this.text):(this.html||"");
			if(this.forId){
				this.el.setAttribute("for",this.forId)
				}
			}
		Ext.form.Label.superclass.onRender.call(this,b,a)
	},
setText:function(a,b){
	var c=b===false;
	this[!c?"text":"html"]=a;
	delete this[c?"text":"html"];
	if(this.rendered){
		this.el.dom.innerHTML=b!==false?Ext.util.Format.htmlEncode(a):a
		}
		return this
	}
});
Ext.reg("label",Ext.form.Label);
Ext.form.Action=function(b,a){
	this.form=b;
	this.options=a||{}
};

Ext.form.Action.CLIENT_INVALID="client";
Ext.form.Action.SERVER_INVALID="server";
Ext.form.Action.CONNECT_FAILURE="connect";
Ext.form.Action.LOAD_FAILURE="load";
Ext.form.Action.prototype={
	type:"default",
	run:function(a){},
	success:function(a){},
	handleResponse:function(a){},
	failure:function(a){
		this.response=a;
		this.failureType=Ext.form.Action.CONNECT_FAILURE;
		this.form.afterAction(this,false)
		},
	processResponse:function(a){
		this.response=a;
		if(!a.responseText&&!a.responseXML){
			return true
			}
			this.result=this.handleResponse(a);
		return this.result
		},
	getUrl:function(c){
		var a=this.options.url||this.form.url||this.form.el.dom.action;
		if(c){
			var b=this.getParams();
			if(b){
				a=Ext.urlAppend(a,b)
				}
			}
		return a
	},
getMethod:function(){
	return(this.options.method||this.form.method||this.form.el.dom.method||"POST").toUpperCase()
	},
getParams:function(){
	var a=this.form.baseParams;
	var b=this.options.params;
	if(b){
		if(typeof b=="object"){
			b=Ext.urlEncode(Ext.applyIf(b,a))
			}else{
			if(typeof b=="string"&&a){
				b+="&"+Ext.urlEncode(a)
				}
			}
	}else{
	if(a){
		b=Ext.urlEncode(a)
		}
	}
return b
},
createCallback:function(a){
	var a=a||{};

	return{
		success:this.success,
		failure:this.failure,
		scope:this,
		timeout:(a.timeout*1000)||(this.form.timeout*1000),
		upload:this.form.fileUpload?this.success:undefined
		}
	}
};

Ext.form.Action.Submit=function(b,a){
	Ext.form.Action.Submit.superclass.constructor.call(this,b,a)
	};

Ext.extend(Ext.form.Action.Submit,Ext.form.Action,{
	type:"submit",
	run:function(){
		var e=this.options,g=this.getMethod(),d=g=="GET";
		if(e.clientValidation===false||this.form.isValid()){
			if(e.submitEmptyText===false){
				var a=this.form.items,c=[],b=function(h){
					if(h.el.getValue()==h.emptyText){
						c.push(h);
						h.el.dom.value=""
						}
						if(h.isComposite&&h.rendered){
						h.items.each(b)
						}
					};

			a.each(b)
			}
			Ext.Ajax.request(Ext.apply(this.createCallback(e),{
			form:this.form.el.dom,
			url:this.getUrl(d),
			method:g,
			headers:e.headers,
			params:!d?this.getParams():null,
			isUpload:this.form.fileUpload
			}));
		if(e.submitEmptyText===false){
			Ext.each(c,function(h){
				if(h.applyEmptyText){
					h.applyEmptyText()
					}
				})
		}
	}else{
	if(e.clientValidation!==false){
		this.failureType=Ext.form.Action.CLIENT_INVALID;
		this.form.afterAction(this,false)
		}
	}
},
success:function(b){
	var a=this.processResponse(b);
	if(a===true||a.success){
		this.form.afterAction(this,true);
		return
	}
	if(a.errors){
		this.form.markInvalid(a.errors)
		}
		this.failureType=Ext.form.Action.SERVER_INVALID;
	this.form.afterAction(this,false)
	},
handleResponse:function(c){
	if(this.form.errorReader){
		var b=this.form.errorReader.read(c);
		var g=[];
		if(b.records){
			for(var d=0,a=b.records.length;d<a;d++){
				var e=b.records[d];
				g[d]=e.data
				}
			}
			if(g.length<1){
		g=null
		}
		return{
		success:b.success,
		errors:g
	}
}
return Ext.decode(c.responseText)
}
});
Ext.form.Action.Load=function(b,a){
	Ext.form.Action.Load.superclass.constructor.call(this,b,a);
	this.reader=this.form.reader
	};

Ext.extend(Ext.form.Action.Load,Ext.form.Action,{
	type:"load",
	run:function(){
		Ext.Ajax.request(Ext.apply(this.createCallback(this.options),{
			method:this.getMethod(),
			url:this.getUrl(false),
			headers:this.options.headers,
			params:this.getParams()
			}))
		},
	success:function(b){
		var a=this.processResponse(b);
		if(a===true||!a.success||!a.data){
			this.failureType=Ext.form.Action.LOAD_FAILURE;
			this.form.afterAction(this,false);
			return
		}
		this.form.clearInvalid();
		this.form.setValues(a.data);
		this.form.afterAction(this,true)
		},
	handleResponse:function(b){
		if(this.form.reader){
			var a=this.form.reader.read(b);
			var c=a.records&&a.records[0]?a.records[0].data:null;
			return{
				success:a.success,
				data:c
			}
		}
		return Ext.decode(b.responseText)
	}
});
Ext.form.Action.DirectLoad=Ext.extend(Ext.form.Action.Load,{
	constructor:function(b,a){
		Ext.form.Action.DirectLoad.superclass.constructor.call(this,b,a)
		},
	type:"directload",
	run:function(){
		var a=this.getParams();
		a.push(this.success,this);
		this.form.api.load.apply(window,a)
		},
	getParams:function(){
		var c=[],h={};

		var e=this.form.baseParams;
		var g=this.options.params;
		Ext.apply(h,g,e);
		var b=this.form.paramOrder;
		if(b){
			for(var d=0,a=b.length;d<a;d++){
				c.push(h[b[d]])
				}
			}else{
		if(this.form.paramsAsHash){
			c.push(h)
			}
		}
	return c
},
processResponse:function(a){
	this.result=a;
	return a
	},
success:function(a,b){
	if(b.type==Ext.Direct.exceptions.SERVER){
		a={}
	}
	Ext.form.Action.DirectLoad.superclass.success.call(this,a)
	}
});
Ext.form.Action.DirectSubmit=Ext.extend(Ext.form.Action.Submit,{
	constructor:function(b,a){
		Ext.form.Action.DirectSubmit.superclass.constructor.call(this,b,a)
		},
	type:"directsubmit",
	run:function(){
		var a=this.options;
		if(a.clientValidation===false||this.form.isValid()){
			this.success.params=this.getParams();
			this.form.api.submit(this.form.el.dom,this.success,this)
			}else{
			if(a.clientValidation!==false){
				this.failureType=Ext.form.Action.CLIENT_INVALID;
				this.form.afterAction(this,false)
				}
			}
	},
getParams:function(){
	var c={};

	var a=this.form.baseParams;
	var b=this.options.params;
	Ext.apply(c,b,a);
	return c
	},
processResponse:function(a){
	this.result=a;
	return a
	},
success:function(a,b){
	if(b.type==Ext.Direct.exceptions.SERVER){
		a={}
	}
	Ext.form.Action.DirectSubmit.superclass.success.call(this,a)
	}
});
Ext.form.Action.ACTION_TYPES={
	load:Ext.form.Action.Load,
	submit:Ext.form.Action.Submit,
	directload:Ext.form.Action.DirectLoad,
	directsubmit:Ext.form.Action.DirectSubmit
	};

Ext.form.VTypes=function(){
	var c=/^[a-zA-Z_]+$/,d=/^[a-zA-Z0-9_]+$/,b=/^(\w+)([\-+.][\w]+)*@(\w[\-\w]*\.){1,5}([A-Za-z]){2,6}$/,a=/(((^https?)|(^ftp)):\/\/([\-\w]+\.)+\w{2,3}(\/[%\-\w]+(\.\w{2,})?)*(([\w\-\.\?\\\/+@&#;`~=%!]*)(\.\w{2,})?)*\/?)/i;
	return{
		email:function(e){
			return b.test(e)
			},
		emailText:'This field should be an e-mail address in the format "user@example.com"',
		emailMask:/[a-z0-9_\.\-@\+]/i,
		url:function(e){
			return a.test(e)
			},
		urlText:'This field should be a URL in the format "http://www.example.com"',
		alpha:function(e){
			return c.test(e)
			},
		alphaText:"This field should only contain letters and _",
		alphaMask:/[a-z_]/i,
		alphanum:function(e){
			return d.test(e)
			},
		alphanumText:"This field should only contain letters, numbers and _",
		alphanumMask:/[a-z0-9_]/i
	}
}();
Ext.grid.GridPanel=Ext.extend(Ext.Panel,{
	autoExpandColumn:false,
	autoExpandMax:1000,
	autoExpandMin:50,
	columnLines:false,
	ddText:"{0} selected row{1}",
	deferRowRender:true,
	enableColumnHide:true,
	enableColumnMove:true,
	enableDragDrop:false,
	enableHdMenu:true,
	loadMask:false,
	minColumnWidth:25,
	stripeRows:false,
	trackMouseOver:true,
	stateEvents:["columnmove","columnresize","sortchange","groupchange"],
	view:null,
	bubbleEvents:[],
	rendered:false,
	viewReady:false,
	initComponent:function(){
		Ext.grid.GridPanel.superclass.initComponent.call(this);
		if(this.columnLines){
			this.cls=(this.cls||"")+" x-grid-with-col-lines"
			}
			this.autoScroll=false;
		this.autoWidth=false;
		if(Ext.isArray(this.columns)){
			this.colModel=new Ext.grid.ColumnModel(this.columns);
			delete this.columns
			}
			if(this.ds){
			this.store=this.ds;
			delete this.ds
			}
			if(this.cm){
			this.colModel=this.cm;
			delete this.cm
			}
			if(this.sm){
			this.selModel=this.sm;
			delete this.sm
			}
			this.store=Ext.StoreMgr.lookup(this.store);
		this.addEvents("click","dblclick","contextmenu","mousedown","mouseup","mouseover","mouseout","keypress","keydown","cellmousedown","rowmousedown","headermousedown","groupmousedown","rowbodymousedown","containermousedown","cellclick","celldblclick","rowclick","rowdblclick","headerclick","headerdblclick","groupclick","groupdblclick","containerclick","containerdblclick","rowbodyclick","rowbodydblclick","rowcontextmenu","cellcontextmenu","headercontextmenu","groupcontextmenu","containercontextmenu","rowbodycontextmenu","bodyscroll","columnresize","columnmove","sortchange","groupchange","reconfigure","viewready")
		},
	onRender:function(d,a){
		Ext.grid.GridPanel.superclass.onRender.apply(this,arguments);
		var e=this.getGridEl();
		this.el.addClass("x-grid-panel");
		this.mon(e,{
			scope:this,
			mousedown:this.onMouseDown,
			click:this.onClick,
			dblclick:this.onDblClick,
			contextmenu:this.onContextMenu
			});
		this.relayEvents(e,["mousedown","mouseup","mouseover","mouseout","keypress","keydown"]);
		var b=this.getView();
		b.init(this);
		b.render();
		this.getSelectionModel().init(this)
		},
	initEvents:function(){
		Ext.grid.GridPanel.superclass.initEvents.call(this);
		if(this.loadMask){
			this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({
				store:this.store
				},this.loadMask))
			}
		},
initStateEvents:function(){
	Ext.grid.GridPanel.superclass.initStateEvents.call(this);
	this.mon(this.colModel,"hiddenchange",this.saveState,this,{
		delay:100
	})
	},
applyState:function(a){
	var l=this.colModel,g=a.columns,k=this.store,n,h,m;
	if(g){
		for(var d=0,e=g.length;d<e;d++){
			n=g[d];
			h=l.getColumnById(n.id);
			if(h){
				m=l.getIndexById(n.id);
				l.setState(m,{
					hidden:n.hidden,
					width:n.width,
					sortable:n.sortable
					});
				if(m!=d){
					l.moveColumn(m,d)
					}
				}
		}
	}
if(k){
	n=a.sort;
	if(n){
		k[k.remoteSort?"setDefaultSort":"sort"](n.field,n.direction)
		}
		n=a.group;
	if(k.groupBy){
		if(n){
			k.groupBy(n)
			}else{
			k.clearGrouping()
			}
		}
}
var b=Ext.apply({},a);
delete b.columns;
delete b.sort;
Ext.grid.GridPanel.superclass.applyState.call(this,b)
},
getState:function(){
	var g={
		columns:[]
	},b=this.store,e,a;
	for(var d=0,h;(h=this.colModel.config[d]);d++){
		g.columns[d]={
			id:h.id,
			width:h.width
			};

		if(h.hidden){
			g.columns[d].hidden=true
			}
			if(h.sortable){
			g.columns[d].sortable=true
			}
		}
	if(b){
	e=b.getSortState();
	if(e){
		g.sort=e
		}
		if(b.getGroupState){
		a=b.getGroupState();
		if(a){
			g.group=a
			}
		}
}
return g
},
afterRender:function(){
	Ext.grid.GridPanel.superclass.afterRender.call(this);
	var a=this.view;
	this.on("bodyresize",a.layout,a);
	a.layout(true);
	if(this.deferRowRender){
		if(!this.deferRowRenderTask){
			this.deferRowRenderTask=new Ext.util.DelayedTask(a.afterRender,this.view)
			}
			this.deferRowRenderTask.delay(10)
		}else{
		a.afterRender()
		}
		this.viewReady=true
	},
reconfigure:function(a,b){
	var c=this.rendered;
	if(c){
		if(this.loadMask){
			this.loadMask.destroy();
			this.loadMask=new Ext.LoadMask(this.bwrap,Ext.apply({},{
				store:a
			},this.initialConfig.loadMask))
			}
		}
	if(this.view){
	this.view.initData(a,b)
	}
	this.store=a;
this.colModel=b;
if(c){
	this.view.refresh(true)
	}
	this.fireEvent("reconfigure",this,a,b)
},
onDestroy:function(){
	if(this.deferRowRenderTask&&this.deferRowRenderTask.cancel){
		this.deferRowRenderTask.cancel()
		}
		if(this.rendered){
		Ext.destroy(this.view,this.loadMask)
		}else{
		if(this.store&&this.store.autoDestroy){
			this.store.destroy()
			}
		}
	Ext.destroy(this.colModel,this.selModel);
this.store=this.selModel=this.colModel=this.view=this.loadMask=null;
Ext.grid.GridPanel.superclass.onDestroy.call(this)
},
processEvent:function(a,b){
	this.view.processEvent(a,b)
	},
onClick:function(a){
	this.processEvent("click",a)
	},
onMouseDown:function(a){
	this.processEvent("mousedown",a)
	},
onContextMenu:function(b,a){
	this.processEvent("contextmenu",b)
	},
onDblClick:function(a){
	this.processEvent("dblclick",a)
	},
walkCells:function(l,c,b,e,k){
	var i=this.colModel,g=i.getColumnCount(),a=this.store,h=a.getCount(),d=true;
	if(b<0){
		if(c<0){
			l--;
			d=false
			}while(l>=0){
			if(!d){
				c=g-1
				}
				d=false;
			while(c>=0){
				if(e.call(k||this,l,c,i)===true){
					return[l,c]
					}
					c--
			}
			l--
		}
	}else{
	if(c>=g){
		l++;
		d=false
		}while(l<h){
		if(!d){
			c=0
			}
			d=false;
		while(c<g){
			if(e.call(k||this,l,c,i)===true){
				return[l,c]
				}
				c++
		}
		l++
	}
}
return null
},
getGridEl:function(){
	return this.body
	},
stopEditing:Ext.emptyFn,
getSelectionModel:function(){
	if(!this.selModel){
		this.selModel=new Ext.grid.RowSelectionModel(this.disableSelection?{
			selectRow:Ext.emptyFn
			}:null)
		}
		return this.selModel
	},
getStore:function(){
	return this.store
	},
getColumnModel:function(){
	return this.colModel
	},
getView:function(){
	if(!this.view){
		this.view=new Ext.grid.GridView(this.viewConfig)
		}
		return this.view
	},
getDragDropText:function(){
	var a=this.selModel.getCount();
	return String.format(this.ddText,a,a==1?"":"s")
	}
});
Ext.reg("grid",Ext.grid.GridPanel);
Ext.grid.PivotGrid=Ext.extend(Ext.grid.GridPanel,{
	aggregator:"sum",
	renderer:undefined,
	initComponent:function(){
		Ext.grid.PivotGrid.superclass.initComponent.apply(this,arguments);
		this.initAxes();
		this.enableColumnResize=false;
		this.viewConfig=Ext.apply(this.viewConfig||{},{
			forceFit:true
		});
		this.colModel=new Ext.grid.ColumnModel({})
		},
	getAggregator:function(){
		if(typeof this.aggregator=="string"){
			return Ext.grid.PivotAggregatorMgr.types[this.aggregator]
			}else{
			return this.aggregator
			}
		},
setAggregator:function(a){
	this.aggregator=a
	},
setMeasure:function(a){
	this.measure=a
	},
setLeftAxis:function(b,a){
	this.leftAxis=b;
	if(a){
		this.view.refresh()
		}
	},
setTopAxis:function(b,a){
	this.topAxis=b;
	if(a){
		this.view.refresh()
		}
	},
initAxes:function(){
	var a=Ext.grid.PivotAxis;
	if(!(this.leftAxis instanceof a)){
		this.setLeftAxis(new a({
			orientation:"vertical",
			dimensions:this.leftAxis||[],
			store:this.store
			}))
		}
		if(!(this.topAxis instanceof a)){
		this.setTopAxis(new a({
			orientation:"horizontal",
			dimensions:this.topAxis||[],
			store:this.store
			}))
		}
	},
extractData:function(){
	var c=this.store.data.items,s=c.length,q=[],h,g,e,d;
	if(s==0){
		return[]
		}
		var l=this.leftAxis.getTuples(),o=l.length,m=this.topAxis.getTuples(),a=m.length,b=this.getAggregator();
	for(g=0;g<s;g++){
		h=c[g];
		for(e=0;e<o;e++){
			q[e]=q[e]||[];
			if(l[e].matcher(h)===true){
				for(d=0;d<a;d++){
					q[e][d]=q[e][d]||[];
					if(m[d].matcher(h)){
						q[e][d].push(h)
						}
					}
				}
		}
	}
var n=q.length,p,r;
for(g=0;g<n;g++){
	r=q[g];
	p=r.length;
	for(e=0;e<p;e++){
		q[g][e]=b(q[g][e],this.measure)
		}
	}
	return q
},
getView:function(){
	if(!this.view){
		this.view=new Ext.grid.PivotGridView(this.viewConfig)
		}
		return this.view
	}
});
Ext.reg("pivotgrid",Ext.grid.PivotGrid);
Ext.grid.PivotAggregatorMgr=new Ext.AbstractManager();
Ext.grid.PivotAggregatorMgr.registerType("sum",function(a,c){
	var e=a.length,d=0,b;
	for(b=0;b<e;b++){
		d+=a[b].get(c)
		}
		return d
	});
Ext.grid.PivotAggregatorMgr.registerType("avg",function(a,c){
	var e=a.length,d=0,b;
	for(b=0;b<e;b++){
		d+=a[b].get(c)
		}
		return(d/e)||"n/a"
	});
Ext.grid.PivotAggregatorMgr.registerType("min",function(a,c){
	var e=[],d=a.length,b;
	for(b=0;b<d;b++){
		e.push(a[b].get(c))
		}
		return Math.min.apply(this,e)||"n/a"
	});
Ext.grid.PivotAggregatorMgr.registerType("max",function(a,c){
	var e=[],d=a.length,b;
	for(b=0;b<d;b++){
		e.push(a[b].get(c))
		}
		return Math.max.apply(this,e)||"n/a"
	});
Ext.grid.PivotAggregatorMgr.registerType("count",function(a,b){
	return a.length
	});
Ext.grid.GridView=Ext.extend(Ext.util.Observable,{
	deferEmptyText:true,
	scrollOffset:undefined,
	autoFill:false,
	forceFit:false,
	sortClasses:["sort-asc","sort-desc"],
	sortAscText:"Sort Ascending",
	sortDescText:"Sort Descending",
	columnsText:"Columns",
	selectedRowClass:"x-grid3-row-selected",
	borderWidth:2,
	tdClass:"x-grid3-cell",
	hdCls:"x-grid3-hd",
	markDirty:true,
	cellSelectorDepth:4,
	rowSelectorDepth:10,
	rowBodySelectorDepth:10,
	cellSelector:"td.x-grid3-cell",
	rowSelector:"div.x-grid3-row",
	rowBodySelector:"div.x-grid3-row-body",
	firstRowCls:"x-grid3-row-first",
	lastRowCls:"x-grid3-row-last",
	rowClsRe:/(?:^|\s+)x-grid3-row-(first|last|alt)(?:\s+|$)/g,
	headerMenuOpenCls:"x-grid3-hd-menu-open",
	rowOverCls:"x-grid3-row-over",
	constructor:function(a){
		Ext.apply(this,a);
		this.addEvents("beforerowremoved","beforerowsinserted","beforerefresh","rowremoved","rowsinserted","rowupdated","refresh");
		Ext.grid.GridView.superclass.constructor.call(this)
		},
	masterTpl:new Ext.Template('<div class="x-grid3" hidefocus="true">','<div class="x-grid3-viewport">','<div class="x-grid3-header">','<div class="x-grid3-header-inner">','<div class="x-grid3-header-offset" style="{ostyle}">{header}</div>',"</div>",'<div class="x-clear"></div>',"</div>",'<div class="x-grid3-scroller">','<div class="x-grid3-body" style="{bstyle}">{body}</div>','<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',"</div>","</div>",'<div class="x-grid3-resize-marker">&#160;</div>','<div class="x-grid3-resize-proxy">&#160;</div>',"</div>"),
	headerTpl:new Ext.Template('<table border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',"<thead>",'<tr class="x-grid3-hd-row">{cells}</tr>',"</thead>","</table>"),
	bodyTpl:new Ext.Template("{rows}"),
	cellTpl:new Ext.Template('<td class="x-grid3-col x-grid3-cell x-grid3-td-{id} {css}" style="{style}" tabIndex="0" {cellAttr}>','<div class="x-grid3-cell-inner x-grid3-col-{id}" unselectable="on" {attr}>{value}</div>',"</td>"),
	initTemplates:function(){
		var c=this.templates||{},d,b,g=new Ext.Template('<td class="x-grid3-hd x-grid3-cell x-grid3-td-{id} {css}" style="{style}">','<div {tooltip} {attr} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">',this.grid.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':"","{value}",'<img alt="" class="x-grid3-sort-icon" src="',Ext.BLANK_IMAGE_URL,'" />',"</div>","</td>"),a=['<tr class="x-grid3-row-body-tr" style="{bodyStyle}">','<td colspan="{cols}" class="x-grid3-body-cell" tabIndex="0" hidefocus="on">','<div class="x-grid3-row-body">{body}</div>',"</td>","</tr>"].join(""),e=['<table class="x-grid3-row-table" border="0" cellspacing="0" cellpadding="0" style="{tstyle}">',"<tbody>","<tr>{cells}</tr>",this.enableRowBody?a:"","</tbody>","</table>"].join("");
		Ext.applyIf(c,{
			hcell:g,
			cell:this.cellTpl,
			body:this.bodyTpl,
			header:this.headerTpl,
			master:this.masterTpl,
			row:new Ext.Template('<div class="x-grid3-row {alt}" style="{tstyle}">'+e+"</div>"),
			rowInner:new Ext.Template(e)
			});
		for(b in c){
			d=c[b];
			if(d&&Ext.isFunction(d.compile)&&!d.compiled){
				d.disableFormats=true;
				d.compile()
				}
			}
		this.templates=c;
	this.colRe=new RegExp("x-grid3-td-([^\\s]+)","")
	},
fly:function(a){
	if(!this._flyweight){
		this._flyweight=new Ext.Element.Flyweight(document.body)
		}
		this._flyweight.dom=a;
	return this._flyweight
	},
getEditorParent:function(){
	return this.scroller.dom
	},
initElements:function(){
	var b=Ext.Element,d=Ext.get(this.grid.getGridEl().dom.firstChild),e=new b(d.child("div.x-grid3-viewport")),c=new b(e.child("div.x-grid3-header")),a=new b(e.child("div.x-grid3-scroller"));
	if(this.grid.hideHeaders){
		c.setDisplayed(false)
		}
		if(this.forceFit){
		a.setStyle("overflow-x","hidden")
		}
		Ext.apply(this,{
		el:d,
		mainWrap:e,
		scroller:a,
		mainHd:c,
		innerHd:c.child("div.x-grid3-header-inner").dom,
		mainBody:new b(b.fly(a).child("div.x-grid3-body")),
		focusEl:new b(b.fly(a).child("a")),
		resizeMarker:new b(d.child("div.x-grid3-resize-marker")),
		resizeProxy:new b(d.child("div.x-grid3-resize-proxy"))
		});
	this.focusEl.swallowEvent("click",true)
	},
getRows:function(){
	return this.hasRows()?this.mainBody.dom.childNodes:[]
	},
findCell:function(a){
	if(!a){
		return false
		}
		return this.fly(a).findParent(this.cellSelector,this.cellSelectorDepth)
	},
findCellIndex:function(d,c){
	var b=this.findCell(d),a;
	if(b){
		a=this.fly(b).hasClass(c);
		if(!c||a){
			return this.getCellIndex(b)
			}
		}
	return false
},
getCellIndex:function(b){
	if(b){
		var a=b.className.match(this.colRe);
		if(a&&a[1]){
			return this.cm.getIndexById(a[1])
			}
		}
	return false
},
findHeaderCell:function(b){
	var a=this.findCell(b);
	return a&&this.fly(a).hasClass(this.hdCls)?a:null
	},
findHeaderIndex:function(a){
	return this.findCellIndex(a,this.hdCls)
	},
findRow:function(a){
	if(!a){
		return false
		}
		return this.fly(a).findParent(this.rowSelector,this.rowSelectorDepth)
	},
findRowIndex:function(a){
	var b=this.findRow(a);
	return b?b.rowIndex:false
	},
findRowBody:function(a){
	if(!a){
		return false
		}
		return this.fly(a).findParent(this.rowBodySelector,this.rowBodySelectorDepth)
	},
getRow:function(a){
	return this.getRows()[a]
	},
getCell:function(b,a){
	return Ext.fly(this.getRow(b)).query(this.cellSelector)[a]
	},
getHeaderCell:function(a){
	return this.mainHd.dom.getElementsByTagName("td")[a]
	},
addRowClass:function(b,a){
	var c=this.getRow(b);
	if(c){
		this.fly(c).addClass(a)
		}
	},
removeRowClass:function(c,a){
	var b=this.getRow(c);
	if(b){
		this.fly(b).removeClass(a)
		}
	},
removeRow:function(a){
	Ext.removeNode(this.getRow(a));
	this.syncFocusEl(a)
	},
removeRows:function(c,a){
	var b=this.mainBody.dom,d;
	for(d=c;d<=a;d++){
		Ext.removeNode(b.childNodes[c])
		}
		this.syncFocusEl(c)
	},
getScrollState:function(){
	var a=this.scroller.dom;
	return{
		left:a.scrollLeft,
		top:a.scrollTop
		}
	},
restoreScroll:function(a){
	var b=this.scroller.dom;
	b.scrollLeft=a.left;
	b.scrollTop=a.top
	},
scrollToTop:function(){
	var a=this.scroller.dom;
	a.scrollTop=0;
	a.scrollLeft=0
	},
syncScroll:function(){
	this.syncHeaderScroll();
	var a=this.scroller.dom;
	this.grid.fireEvent("bodyscroll",a.scrollLeft,a.scrollTop)
	},
syncHeaderScroll:function(){
	var a=this.innerHd,b=this.scroller.dom.scrollLeft;
	a.scrollLeft=b;
	a.scrollLeft=b
	},
updateSortIcon:function(d,c){
	var a=this.sortClasses,b=a[c=="DESC"?1:0],e=this.mainHd.select("td").removeClass(a);
	e.item(d).addClass(b)
	},
updateAllColumnWidths:function(){
	var e=this.getTotalWidth(),k=this.cm.getColumnCount(),m=this.getRows(),g=m.length,b=[],l,a,h,d,c;
	for(d=0;d<k;d++){
		b[d]=this.getColumnWidth(d);
		this.getHeaderCell(d).style.width=b[d]
		}
		this.updateHeaderWidth();
	for(d=0;d<g;d++){
		l=m[d];
		l.style.width=e;
		a=l.firstChild;
		if(a){
			a.style.width=e;
			h=a.rows[0];
			for(c=0;c<k;c++){
				h.childNodes[c].style.width=b[c]
				}
			}
		}
	this.onAllColumnWidthsUpdated(b,e)
},
updateColumnWidth:function(d,b){
	var c=this.getColumnWidth(d),k=this.getTotalWidth(),h=this.getHeaderCell(d),a=this.getRows(),e=a.length,m,g,l;
	this.updateHeaderWidth();
	h.style.width=c;
	for(g=0;g<e;g++){
		m=a[g];
		l=m.firstChild;
		m.style.width=k;
		if(l){
			l.style.width=k;
			l.rows[0].childNodes[d].style.width=c
			}
		}
	this.onColumnWidthUpdated(d,c,k)
},
updateColumnHidden:function(b,k){
	var h=this.getTotalWidth(),l=k?"none":"",g=this.getHeaderCell(b),a=this.getRows(),d=a.length,m,c,e;
	this.updateHeaderWidth();
	g.style.display=l;
	for(e=0;e<d;e++){
		m=a[e];
		m.style.width=h;
		c=m.firstChild;
		if(c){
			c.style.width=h;
			c.rows[0].childNodes[b].style.display=l
			}
		}
	this.onColumnHiddenUpdated(b,k,h);
delete this.lastViewWidth;
this.layout()
},
doRender:function(d,v,m,a,r,t){
	var h=this.templates,c=h.cell,y=h.row,o=r-1,b="width:"+this.getTotalWidth()+";",k=[],l=[],n={
		tstyle:b
	},q={},w=v.length,x,g,e,u,s,p;
	for(s=0;s<w;s++){
		e=v[s];
		l=[];
		p=s+a;
		for(u=0;u<r;u++){
			g=d[u];
			q.id=g.id;
			q.css=u===0?"x-grid3-cell-first ":(u==o?"x-grid3-cell-last ":"");
			q.attr=q.cellAttr="";
			q.style=g.style;
			q.value=g.renderer.call(g.scope,e.data[g.name],q,e,p,u,m);
			if(Ext.isEmpty(q.value)){
				q.value="&#160;"
				}
				if(this.markDirty&&e.dirty&&typeof e.modified[g.name]!="undefined"){
				q.css+=" x-grid3-dirty-cell"
				}
				l[l.length]=c.apply(q)
			}
			x=[];
		if(t&&((p+1)%2===0)){
			x[0]="x-grid3-row-alt"
			}
			if(e.dirty){
			x[1]=" x-grid3-dirty-row"
			}
			n.cols=r;
		if(this.getRowClass){
			x[2]=this.getRowClass(e,p,n,m)
			}
			n.alt=x.join(" ");
		n.cells=l.join("");
		k[k.length]=y.apply(n)
		}
		return k.join("")
	},
processRows:function(a,g){
	if(!this.ds||this.ds.getCount()<1){
		return
	}
	var d=this.getRows(),c=d.length,e,b;
	g=g||!this.grid.stripeRows;
	a=a||0;
	for(b=0;b<c;b++){
		e=d[b];
		if(e){
			e.rowIndex=b;
			if(!g){
				e.className=e.className.replace(this.rowClsRe," ");
				if((b+1)%2===0){
					e.className+=" x-grid3-row-alt"
					}
				}
		}
	}
if(a===0){
	Ext.fly(d[0]).addClass(this.firstRowCls)
	}
	Ext.fly(d[c-1]).addClass(this.lastRowCls)
},
afterRender:function(){
	if(!this.ds||!this.cm){
		return
	}
	this.mainBody.dom.innerHTML=this.renderBody()||"&#160;";
	this.processRows(0,true);
	if(this.deferEmptyText!==true){
		this.applyEmptyText()
		}
		this.grid.fireEvent("viewready",this.grid)
	},
afterRenderUI:function(){
	var a=this.grid;
	this.initElements();
	Ext.fly(this.innerHd).on("click",this.handleHdDown,this);
	this.mainHd.on({
		scope:this,
		mouseover:this.handleHdOver,
		mouseout:this.handleHdOut,
		mousemove:this.handleHdMove
		});
	this.scroller.on("scroll",this.syncScroll,this);
	if(a.enableColumnResize!==false){
		this.splitZone=new Ext.grid.GridView.SplitDragZone(a,this.mainHd.dom)
		}
		if(a.enableColumnMove){
		this.columnDrag=new Ext.grid.GridView.ColumnDragZone(a,this.innerHd);
		this.columnDrop=new Ext.grid.HeaderDropZone(a,this.mainHd.dom)
		}
		if(a.enableHdMenu!==false){
		this.hmenu=new Ext.menu.Menu({
			id:a.id+"-hctx"
			});
		this.hmenu.add({
			itemId:"asc",
			text:this.sortAscText,
			cls:"xg-hmenu-sort-asc"
		},{
			itemId:"desc",
			text:this.sortDescText,
			cls:"xg-hmenu-sort-desc"
		});
		if(a.enableColumnHide!==false){
			this.colMenu=new Ext.menu.Menu({
				id:a.id+"-hcols-menu"
				});
			this.colMenu.on({
				scope:this,
				beforeshow:this.beforeColMenuShow,
				itemclick:this.handleHdMenuClick
				});
			this.hmenu.add("-",{
				itemId:"columns",
				hideOnClick:false,
				text:this.columnsText,
				menu:this.colMenu,
				iconCls:"x-cols-icon"
			})
			}
			this.hmenu.on("itemclick",this.handleHdMenuClick,this)
		}
		if(a.trackMouseOver){
		this.mainBody.on({
			scope:this,
			mouseover:this.onRowOver,
			mouseout:this.onRowOut
			})
		}
		if(a.enableDragDrop||a.enableDrag){
		this.dragZone=new Ext.grid.GridDragZone(a,{
			ddGroup:a.ddGroup||"GridDD"
			})
		}
		this.updateHeaderSortState()
	},
renderUI:function(){
	var a=this.templates;
	return a.master.apply({
		body:a.body.apply({
			rows:"&#160;"
		}),
		header:this.renderHeaders(),
		ostyle:"width:"+this.getOffsetWidth()+";",
		bstyle:"width:"+this.getTotalWidth()+";"
		})
	},
processEvent:function(b,h){
	var i=h.getTarget(),a=this.grid,d=this.findHeaderIndex(i),l,k,c,g;
	a.fireEvent(b,h);
	if(d!==false){
		a.fireEvent("header"+b,a,d,h)
		}else{
		l=this.findRowIndex(i);
		if(l!==false){
			k=this.findCellIndex(i);
			if(k!==false){
				c=a.colModel.getColumnAt(k);
				if(a.fireEvent("cell"+b,a,l,k,h)!==false){
					if(!c||(c.processEvent&&(c.processEvent(b,h,a,l,k)!==false))){
						a.fireEvent("row"+b,a,l,h)
						}
					}
			}else{
		if(a.fireEvent("row"+b,a,l,h)!==false){
			(g=this.findRowBody(i))&&a.fireEvent("rowbody"+b,a,l,h)
			}
		}
}else{
	a.fireEvent("container"+b,a,h)
	}
}
},
layout:function(k){
	if(!this.mainBody){
		return
	}
	var a=this.grid,d=a.getGridEl(),c=d.getSize(true),i=c.width,b=c.height,h=this.scroller,g,e,l;
	if(i<20||b<20){
		return
	}
	if(a.autoHeight){
		g=h.dom.style;
		g.overflow="visible";
		if(Ext.isWebKit){
			g.position="static"
			}
		}else{
	this.el.setSize(i,b);
	e=this.mainHd.getHeight();
	l=b-e;
	h.setSize(i,l);
	if(this.innerHd){
		this.innerHd.style.width=(i)+"px"
		}
	}
if(this.forceFit||(k===true&&this.autoFill)){
	if(this.lastViewWidth!=i){
		this.fitColumns(false,false);
		this.lastViewWidth=i
		}
	}else{
	this.autoExpand();
	this.syncHeaderScroll()
	}
	this.onLayout(i,l)
},
onLayout:function(a,b){},
onColumnWidthUpdated:function(c,a,b){},
onAllColumnWidthsUpdated:function(a,b){},
onColumnHiddenUpdated:function(b,c,a){},
updateColumnText:function(a,b){},
afterMove:function(a){},
init:function(a){
	this.grid=a;
	this.initTemplates();
	this.initData(a.store,a.colModel);
	this.initUI(a)
	},
getColumnId:function(a){
	return this.cm.getColumnId(a)
	},
getOffsetWidth:function(){
	return(this.cm.getTotalWidth()+this.getScrollOffset())+"px"
	},
getScrollOffset:function(){
	return Ext.num(this.scrollOffset,Ext.getScrollBarWidth())
	},
renderHeaders:function(){
	var e=this.cm,g=this.templates,a=g.hcell,d={},h=e.getColumnCount(),k=h-1,l=[],c,b;
	for(c=0;c<h;c++){
		if(c==0){
			b="x-grid3-cell-first "
			}else{
			b=c==k?"x-grid3-cell-last ":""
			}
			d={
			id:e.getColumnId(c),
			value:e.getColumnHeader(c)||"",
			style:this.getColumnStyle(c,true),
			css:b,
			tooltip:this.getColumnTooltip(c)
			};

		if(e.config[c].align=="right"){
			d.istyle="padding-right: 16px;"
			}else{
			delete d.istyle
			}
			l[c]=a.apply(d)
		}
		return g.header.apply({
		cells:l.join(""),
		tstyle:String.format("width: {0};",this.getTotalWidth())
		})
	},
getColumnTooltip:function(a){
	var b=this.cm.getColumnTooltip(a);
	if(b){
		if(Ext.QuickTips.isEnabled()){
			return'ext:qtip="'+b+'"'
			}else{
			return'title="'+b+'"'
			}
		}
	return""
},
beforeUpdate:function(){
	this.grid.stopEditing(true)
	},
updateHeaders:function(){
	this.innerHd.firstChild.innerHTML=this.renderHeaders();
	this.updateHeaderWidth(false)
	},
updateHeaderWidth:function(c){
	var b=this.innerHd.firstChild,a=this.getTotalWidth();
	b.style.width=this.getOffsetWidth();
	b.firstChild.style.width=a;
	if(c!==false){
		this.mainBody.dom.style.width=a
		}
	},
focusRow:function(a){
	this.focusCell(a,0,false)
	},
focusCell:function(d,b,c){
	this.syncFocusEl(this.ensureVisible(d,b,c));
	var a=this.focusEl;
	if(Ext.isGecko){
		a.focus()
		}else{
		a.focus.defer(1,a)
		}
	},
resolveCell:function(h,d,g){
	if(!Ext.isNumber(h)){
		h=h.rowIndex
		}
		if(!this.ds){
		return null
		}
		if(h<0||h>=this.ds.getCount()){
		return null
		}
		d=(d!==undefined?d:0);
	var c=this.getRow(h),b=this.cm,e=b.getColumnCount(),a;
	if(!(g===false&&d===0)){
		while(d<e&&b.isHidden(d)){
			d++
		}
		a=this.getCell(h,d)
		}
		return{
		row:c,
		cell:a
	}
},
getResolvedXY:function(b){
	if(!b){
		return null
		}
		var a=b.cell,c=b.row;
	if(a){
		return Ext.fly(a).getXY()
		}else{
		return[this.el.getX(),Ext.fly(c).getY()]
		}
	},
syncFocusEl:function(d,a,c){
	var b=d;
	if(!Ext.isArray(b)){
		d=Math.min(d,Math.max(0,this.getRows().length-1));
		if(isNaN(d)){
			return
		}
		b=this.getResolvedXY(this.resolveCell(d,a,c))
		}
		this.focusEl.setXY(b||this.scroller.getXY())
	},
ensureVisible:function(u,g,e){
	var s=this.resolveCell(u,g,e);
	if(!s||!s.row){
		return null
		}
		var l=s.row,h=s.cell,o=this.scroller.dom,d=l,t=0,q=this.el.dom;
	while(d&&d!=q){
		t+=d.offsetTop;
		d=d.offsetParent
		}
		t-=this.mainHd.dom.offsetHeight;
	q=parseInt(o.scrollTop,10);
	var r=t+l.offsetHeight,a=o.clientHeight,n=q+a;
	if(t<q){
		o.scrollTop=t
		}else{
		if(r>n){
			o.scrollTop=r-a
			}
		}
	if(e!==false){
	var m=parseInt(h.offsetLeft,10),k=m+h.offsetWidth,i=parseInt(o.scrollLeft,10),b=i+o.clientWidth;
	if(m<i){
		o.scrollLeft=m
		}else{
		if(k>b){
			o.scrollLeft=k-o.clientWidth
			}
		}
}
return this.getResolvedXY(s)
},
insertRows:function(a,i,e,h){
	var d=a.getCount()-1;
	if(!h&&i===0&&e>=d){
		this.fireEvent("beforerowsinserted",this,i,e);
		this.refresh();
		this.fireEvent("rowsinserted",this,i,e)
		}else{
		if(!h){
			this.fireEvent("beforerowsinserted",this,i,e)
			}
			var b=this.renderRows(i,e),g=this.getRow(i);
		if(g){
			if(i===0){
				Ext.fly(this.getRow(0)).removeClass(this.firstRowCls)
				}
				Ext.DomHelper.insertHtml("beforeBegin",g,b)
			}else{
			var c=this.getRow(d-1);
			if(c){
				Ext.fly(c).removeClass(this.lastRowCls)
				}
				Ext.DomHelper.insertHtml("beforeEnd",this.mainBody.dom,b)
			}
			if(!h){
			this.processRows(i);
			this.fireEvent("rowsinserted",this,i,e)
			}else{
			if(i===0||i>=d){
				Ext.fly(this.getRow(i)).addClass(i===0?this.firstRowCls:this.lastRowCls)
				}
			}
	}
this.syncFocusEl(i)
},
deleteRows:function(a,c,b){
	if(a.getRowCount()<1){
		this.refresh()
		}else{
		this.fireEvent("beforerowsdeleted",this,c,b);
		this.removeRows(c,b);
		this.processRows(c);
		this.fireEvent("rowsdeleted",this,c,b)
		}
	},
getColumnStyle:function(b,d){
	var a=this.cm,g=a.config,c=d?"":g[b].css||"",e=g[b].align;
	c+=String.format("width: {0};",this.getColumnWidth(b));
	if(a.isHidden(b)){
		c+="display: none; "
		}
		if(e){
		c+=String.format("text-align: {0};",e)
		}
		return c
	},
getColumnWidth:function(b){
	var c=this.cm.getColumnWidth(b),a=this.borderWidth;
	if(Ext.isNumber(c)){
		if(Ext.isBorderBox||(Ext.isWebKit&&!Ext.isSafari2)){
			return c+"px"
			}else{
			return Math.max(c-a,0)+"px"
			}
		}else{
	return c
	}
},
getTotalWidth:function(){
	return this.cm.getTotalWidth()+"px"
	},
fitColumns:function(g,k,h){
	var a=this.grid,m=this.cm,t=m.getTotalWidth(false),r=this.getGridInnerWidth(),s=r-t,c=[],p=0,o=0,v,d,q;
	if(r<20||s===0){
		return false
		}
		var e=m.getColumnCount(true),n=m.getColumnCount(false),b=e-(Ext.isNumber(h)?1:0);
	if(b===0){
		b=1;
		h=undefined
		}
		for(q=0;q<n;q++){
		if(!m.isFixed(q)&&q!==h){
			v=m.getColumnWidth(q);
			c.push(q,v);
			if(!m.isHidden(q)){
				p=q;
				o+=v
				}
			}
	}
	d=(r-m.getTotalWidth())/o;
while(c.length){
	v=c.pop();
	q=c.pop();
	m.setColumnWidth(q,Math.max(a.minColumnWidth,Math.floor(v+v*d)),true)
	}
	t=m.getTotalWidth(false);
if(t>r){
	var u=(b==e)?p:h,l=Math.max(1,m.getColumnWidth(u)-(t-r));
	m.setColumnWidth(u,l,true)
	}
	if(g!==true){
	this.updateAllColumnWidths()
	}
	return true
},
autoExpand:function(l){
	var a=this.grid,i=this.cm,e=this.getGridInnerWidth(),c=i.getTotalWidth(false),g=a.autoExpandColumn;
	if(!this.userResized&&g){
		if(e!=c){
			var k=i.getIndexById(g),b=i.getColumnWidth(k),h=e-c+b,d=Math.min(Math.max(h,a.autoExpandMin),a.autoExpandMax);
			if(b!=d){
				i.setColumnWidth(k,d,true);
				if(l!==true){
					this.updateColumnWidth(k,d)
					}
				}
		}
}
},
getGridInnerWidth:function(){
	return this.grid.getGridEl().getWidth(true)-this.getScrollOffset()
	},
getColumnData:function(){
	var e=[],c=this.cm,g=c.getColumnCount(),a=this.ds.fields,d,b;
	for(d=0;d<g;d++){
		b=c.getDataIndex(d);
		e[d]={
			name:Ext.isDefined(b)?b:(a.get(d)?a.get(d).name:undefined),
			renderer:c.getRenderer(d),
			scope:c.getRendererScope(d),
			id:c.getColumnId(d),
			style:this.getColumnStyle(d)
			}
		}
	return e
},
renderRows:function(i,c){
	var a=this.grid,g=a.store,k=a.stripeRows,e=a.colModel,h=e.getColumnCount(),d=g.getCount(),b;
	if(d<1){
		return""
		}
		i=i||0;
	c=Ext.isDefined(c)?c:d-1;
	b=g.getRange(i,c);
	return this.doRender(this.getColumnData(),b,g,i,h,k)
	},
renderBody:function(){
	var a=this.renderRows()||"&#160;";
	return this.templates.body.apply({
		rows:a
	})
	},
refreshRow:function(g){
	var m=this.ds,n=this.cm.getColumnCount(),c=this.getColumnData(),o=n-1,q=["x-grid3-row"],e={
		tstyle:String.format("width: {0};",this.getTotalWidth())
		},a=[],l=this.templates.cell,k,r,b,p,h,d;
	if(Ext.isNumber(g)){
		k=g;
		g=m.getAt(k)
		}else{
		k=m.indexOf(g)
		}
		if(!g||k<0){
		return
	}
	for(d=0;d<n;d++){
		b=c[d];
		if(d==0){
			h="x-grid3-cell-first"
			}else{
			h=(d==o)?"x-grid3-cell-last ":""
			}
			p={
			id:b.id,
			style:b.style,
			css:h,
			attr:"",
			cellAttr:""
		};

		p.value=b.renderer.call(b.scope,g.data[b.name],p,g,k,d,m);
		if(Ext.isEmpty(p.value)){
			p.value="&#160;"
			}
			if(this.markDirty&&g.dirty&&typeof g.modified[b.name]!="undefined"){
			p.css+=" x-grid3-dirty-cell"
			}
			a[d]=l.apply(p)
		}
		r=this.getRow(k);
	r.className="";
	if(this.grid.stripeRows&&((k+1)%2===0)){
		q.push("x-grid3-row-alt")
		}
		if(this.getRowClass){
		e.cols=n;
		q.push(this.getRowClass(g,k,e,m))
		}
		this.fly(r).addClass(q).setStyle(e.tstyle);
	e.cells=a.join("");
	r.innerHTML=this.templates.rowInner.apply(e);
	this.fireEvent("rowupdated",this,k,g)
	},
refresh:function(b){
	this.fireEvent("beforerefresh",this);
	this.grid.stopEditing(true);
	var a=this.renderBody();
	this.mainBody.update(a).setWidth(this.getTotalWidth());
	if(b===true){
		this.updateHeaders();
		this.updateHeaderSortState()
		}
		this.processRows(0,true);
	this.layout();
	this.applyEmptyText();
	this.fireEvent("refresh",this)
	},
applyEmptyText:function(){
	if(this.emptyText&&!this.hasRows()){
		this.mainBody.update('<div class="x-grid-empty">'+this.emptyText+"</div>")
		}
	},
updateHeaderSortState:function(){
	var b=this.ds.getSortState();
	if(!b){
		return
	}
	if(!this.sortState||(this.sortState.field!=b.field||this.sortState.direction!=b.direction)){
		this.grid.fireEvent("sortchange",this.grid,b)
		}
		this.sortState=b;
	var c=this.cm.findColumnIndex(b.field);
	if(c!=-1){
		var a=b.direction;
		this.updateSortIcon(c,a)
		}
	},
clearHeaderSortState:function(){
	if(!this.sortState){
		return
	}
	this.grid.fireEvent("sortchange",this.grid,null);
	this.mainHd.select("td").removeClass(this.sortClasses);
	delete this.sortState
	},
destroy:function(){
	var k=this,a=k.grid,d=a.getGridEl(),i=k.dragZone,g=k.splitZone,h=k.columnDrag,e=k.columnDrop,l=k.scrollToTopTask,c,b;
	if(l&&l.cancel){
		l.cancel()
		}
		Ext.destroyMembers(k,"colMenu","hmenu");
	k.initData(null,null);
	k.purgeListeners();
	Ext.fly(k.innerHd).un("click",k.handleHdDown,k);
	if(a.enableColumnMove){
		c=h.dragData;
		b=h.proxy;
		Ext.destroy(h.el,b.ghost,b.el,e.el,e.proxyTop,e.proxyBottom,c.ddel,c.header);
		if(b.anim){
			Ext.destroy(b.anim)
			}
			delete b.ghost;
		delete c.ddel;
		delete c.header;
		h.destroy();
		delete Ext.dd.DDM.locationCache[h.id];
		delete h._domRef;
		delete e.proxyTop;
		delete e.proxyBottom;
		e.destroy();
		delete Ext.dd.DDM.locationCache["gridHeader"+d.id];
		delete e._domRef;
		delete Ext.dd.DDM.ids[e.ddGroup]
	}
	if(g){
		g.destroy();
		delete g._domRef;
		delete Ext.dd.DDM.ids["gridSplitters"+d.id]
	}
	Ext.fly(k.innerHd).removeAllListeners();
	Ext.removeNode(k.innerHd);
	delete k.innerHd;
	Ext.destroy(k.el,k.mainWrap,k.mainHd,k.scroller,k.mainBody,k.focusEl,k.resizeMarker,k.resizeProxy,k.activeHdBtn,k._flyweight,i,g);
	delete a.container;
	if(i){
		i.destroy()
		}
		Ext.dd.DDM.currentTarget=null;
	delete Ext.dd.DDM.locationCache[d.id];
	Ext.EventManager.removeResizeListener(k.onWindowResize,k)
	},
onDenyColumnHide:function(){},
render:function(){
	if(this.autoFill){
		var a=this.grid.ownerCt;
		if(a&&a.getLayout()){
			a.on("afterlayout",function(){
				this.fitColumns(true,true);
				this.updateHeaders();
				this.updateHeaderSortState()
				},this,{
				single:true
			})
			}
		}else{
	if(this.forceFit){
		this.fitColumns(true,false)
		}else{
		if(this.grid.autoExpandColumn){
			this.autoExpand(true)
			}
		}
}
this.grid.getGridEl().dom.innerHTML=this.renderUI();
this.afterRenderUI()
},
initData:function(a,e){
	var b=this;
	if(b.ds){
		var d=b.ds;
		d.un("add",b.onAdd,b);
		d.un("load",b.onLoad,b);
		d.un("clear",b.onClear,b);
		d.un("remove",b.onRemove,b);
		d.un("update",b.onUpdate,b);
		d.un("datachanged",b.onDataChange,b);
		if(d!==a&&d.autoDestroy){
			d.destroy()
			}
		}
	if(a){
	a.on({
		scope:b,
		load:b.onLoad,
		add:b.onAdd,
		remove:b.onRemove,
		update:b.onUpdate,
		clear:b.onClear,
		datachanged:b.onDataChange
		})
	}
	if(b.cm){
	var c=b.cm;
	c.un("configchange",b.onColConfigChange,b);
	c.un("widthchange",b.onColWidthChange,b);
	c.un("headerchange",b.onHeaderChange,b);
	c.un("hiddenchange",b.onHiddenChange,b);
	c.un("columnmoved",b.onColumnMove,b)
	}
	if(e){
	delete b.lastViewWidth;
	e.on({
		scope:b,
		configchange:b.onColConfigChange,
		widthchange:b.onColWidthChange,
		headerchange:b.onHeaderChange,
		hiddenchange:b.onHiddenChange,
		columnmoved:b.onColumnMove
		})
	}
	b.ds=a;
b.cm=e
},
onDataChange:function(){
	this.refresh(true);
	this.updateHeaderSortState();
	this.syncFocusEl(0)
	},
onClear:function(){
	this.refresh();
	this.syncFocusEl(0)
	},
onUpdate:function(b,a){
	this.refreshRow(a)
	},
onAdd:function(b,a,c){
	this.insertRows(b,c,c+(a.length-1))
	},
onRemove:function(b,a,c,d){
	if(d!==true){
		this.fireEvent("beforerowremoved",this,c,a)
		}
		this.removeRow(c);
	if(d!==true){
		this.processRows(c);
		this.applyEmptyText();
		this.fireEvent("rowremoved",this,c,a)
		}
	},
onLoad:function(){
	if(Ext.isGecko){
		if(!this.scrollToTopTask){
			this.scrollToTopTask=new Ext.util.DelayedTask(this.scrollToTop,this)
			}
			this.scrollToTopTask.delay(1)
		}else{
		this.scrollToTop()
		}
	},
onColWidthChange:function(a,b,c){
	this.updateColumnWidth(b,c)
	},
onHeaderChange:function(a,b,c){
	this.updateHeaders()
	},
onHiddenChange:function(a,b,c){
	this.updateColumnHidden(b,c)
	},
onColumnMove:function(a,c,b){
	this.indexMap=null;
	this.refresh(true);
	this.restoreScroll(this.getScrollState());
	this.afterMove(b);
	this.grid.fireEvent("columnmove",c,b)
	},
onColConfigChange:function(){
	delete this.lastViewWidth;
	this.indexMap=null;
	this.refresh(true)
	},
initUI:function(a){
	a.on("headerclick",this.onHeaderClick,this)
	},
initEvents:Ext.emptyFn,
onHeaderClick:function(b,a){
	if(this.headersDisabled||!this.cm.isSortable(a)){
		return
	}
	b.stopEditing(true);
	b.store.sort(this.cm.getDataIndex(a))
	},
onRowOver:function(b,a){
	var c=this.findRowIndex(a);
	if(c!==false){
		this.addRowClass(c,this.rowOverCls)
		}
	},
onRowOut:function(b,a){
	var c=this.findRowIndex(a);
	if(c!==false&&!b.within(this.getRow(c),true)){
		this.removeRowClass(c,this.rowOverCls)
		}
	},
onRowSelect:function(a){
	this.addRowClass(a,this.selectedRowClass)
	},
onRowDeselect:function(a){
	this.removeRowClass(a,this.selectedRowClass)
	},
onCellSelect:function(c,b){
	var a=this.getCell(c,b);
	if(a){
		this.fly(a).addClass("x-grid3-cell-selected")
		}
	},
onCellDeselect:function(c,b){
	var a=this.getCell(c,b);
	if(a){
		this.fly(a).removeClass("x-grid3-cell-selected")
		}
	},
handleWheel:function(a){
	a.stopPropagation()
	},
onColumnSplitterMoved:function(a,b){
	this.userResized=true;
	this.grid.colModel.setColumnWidth(a,b,true);
	if(this.forceFit){
		this.fitColumns(true,false,a);
		this.updateAllColumnWidths()
		}else{
		this.updateColumnWidth(a,b);
		this.syncHeaderScroll()
		}
		this.grid.fireEvent("columnresize",a,b)
	},
beforeColMenuShow:function(){
	var b=this.cm,d=b.getColumnCount(),a=this.colMenu,c;
	a.removeAll();
	for(c=0;c<d;c++){
		if(b.config[c].hideable!==false){
			a.add(new Ext.menu.CheckItem({
				text:b.getColumnHeader(c),
				itemId:"col-"+b.getColumnId(c),
				checked:!b.isHidden(c),
				disabled:b.config[c].hideable===false,
				hideOnClick:false
			}))
			}
		}
	},
handleHdMenuClick:function(c){
	var a=this.ds,b=this.cm.getDataIndex(this.hdCtxIndex);
	switch(c.getItemId()){
		case"asc":
			a.sort(b,"ASC");
			break;
		case"desc":
			a.sort(b,"DESC");
			break;
		default:
			this.handleHdMenuClickDefault(c)
			}
			return true
	},
handleHdMenuClickDefault:function(c){
	var b=this.cm,d=c.getItemId(),a=b.getIndexById(d.substr(4));
	if(a!=-1){
		if(c.checked&&b.getColumnsBy(this.isHideableColumn,this).length<=1){
			this.onDenyColumnHide();
			return
		}
		b.setHidden(a,c.checked)
		}
	},
handleHdDown:function(i,k){
	if(Ext.fly(k).hasClass("x-grid3-hd-btn")){
		i.stopEvent();
		var l=this.cm,g=this.findHeaderCell(k),h=this.getCellIndex(g),d=l.isSortable(h),c=this.hmenu,b=c.items,a=this.headerMenuOpenCls;
		this.hdCtxIndex=h;
		Ext.fly(g).addClass(a);
		b.get("asc").setDisabled(!d);
		b.get("desc").setDisabled(!d);
		c.on("hide",function(){
			Ext.fly(g).removeClass(a)
			},this,{
			single:true
		});
		c.show(k,"tl-bl?")
		}
	},
handleHdMove:function(l){
	var i=this.findHeaderCell(this.activeHdRef);
	if(i&&!this.headersDisabled){
		var m=this.splitHandleWidth||5,k=this.activeHdRegion,q=i.style,n=this.cm,p="",g=l.getPageX();
		if(this.grid.enableColumnResize!==false){
			var a=this.activeHdIndex,b=this.getPreviousVisible(a),o=n.isResizable(a),c=b&&n.isResizable(b),d=g-k.left<=m,h=k.right-g<=(!this.activeHdBtn?m:2);
			if(d&&c){
				p=Ext.isAir?"move":Ext.isWebKit?"e-resize":"col-resize"
				}else{
				if(h&&o){
					p=Ext.isAir?"move":Ext.isWebKit?"w-resize":"col-resize"
					}
				}
		}
	q.cursor=p
}
},
getPreviousVisible:function(a){
	while(a>0){
		if(!this.cm.isHidden(a-1)){
			return a
			}
			a--
	}
	return undefined
	},
handleHdOver:function(c,b){
	var d=this.findHeaderCell(b);
	if(d&&!this.headersDisabled){
		var a=this.fly(d);
		this.activeHdRef=b;
		this.activeHdIndex=this.getCellIndex(d);
		this.activeHdRegion=a.getRegion();
		if(!this.isMenuDisabled(this.activeHdIndex,a)){
			a.addClass("x-grid3-hd-over");
			this.activeHdBtn=a.child(".x-grid3-hd-btn");
			if(this.activeHdBtn){
				this.activeHdBtn.dom.style.height=(d.firstChild.offsetHeight-1)+"px"
				}
			}
	}
},
handleHdOut:function(b,a){
	var c=this.findHeaderCell(a);
	if(c&&(!Ext.isIE||!b.within(c,true))){
		this.activeHdRef=null;
		this.fly(c).removeClass("x-grid3-hd-over");
		c.style.cursor=""
		}
	},
isMenuDisabled:function(a,b){
	return this.cm.isMenuDisabled(a)
	},
hasRows:function(){
	var a=this.mainBody.dom.firstChild;
	return a&&a.nodeType==1&&a.className!="x-grid-empty"
	},
isHideableColumn:function(a){
	return !a.hidden
	},
bind:function(a,b){
	this.initData(a,b)
	}
});
Ext.grid.GridView.SplitDragZone=Ext.extend(Ext.dd.DDProxy,{
	constructor:function(a,b){
		this.grid=a;
		this.view=a.getView();
		this.marker=this.view.resizeMarker;
		this.proxy=this.view.resizeProxy;
		Ext.grid.GridView.SplitDragZone.superclass.constructor.call(this,b,"gridSplitters"+this.grid.getGridEl().id,{
			dragElId:Ext.id(this.proxy.dom),
			resizeFrame:false
		});
		this.scroll=false;
		this.hw=this.view.splitHandleWidth||5
		},
	b4StartDrag:function(a,e){
		this.dragHeadersDisabled=this.view.headersDisabled;
		this.view.headersDisabled=true;
		var d=this.view.mainWrap.getHeight();
		this.marker.setHeight(d);
		this.marker.show();
		this.marker.alignTo(this.view.getHeaderCell(this.cellIndex),"tl-tl",[-2,0]);
		this.proxy.setHeight(d);
		var b=this.cm.getColumnWidth(this.cellIndex),c=Math.max(b-this.grid.minColumnWidth,0);
		this.resetConstraints();
		this.setXConstraint(c,1000);
		this.setYConstraint(0,0);
		this.minX=a-c;
		this.maxX=a+1000;
		this.startPos=a;
		Ext.dd.DDProxy.prototype.b4StartDrag.call(this,a,e)
		},
	allowHeaderDrag:function(a){
		return true
		},
	handleMouseDown:function(a){
		var h=this.view.findHeaderCell(a.getTarget());
		if(h&&this.allowHeaderDrag(a)){
			var l=this.view.fly(h).getXY(),c=l[0],i=a.getXY(),b=i[0],g=h.offsetWidth,d=false;
			if((b-c)<=this.hw){
				d=-1
				}else{
				if((c+g)-b<=this.hw){
					d=0
					}
				}
			if(d!==false){
			this.cm=this.grid.colModel;
			var k=this.view.getCellIndex(h);
			if(d==-1){
				if(k+d<0){
					return
				}while(this.cm.isHidden(k+d)){
					--d;
					if(k+d<0){
						return
					}
				}
			}
		this.cellIndex=k+d;
	this.split=h.dom;
	if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){
		Ext.grid.GridView.SplitDragZone.superclass.handleMouseDown.apply(this,arguments)
		}
	}else{
	if(this.view.columnDrag){
		this.view.columnDrag.callHandleMouseDown(a)
		}
	}
}
},
endDrag:function(g){
	this.marker.hide();
	var a=this.view,c=Math.max(this.minX,g.getPageX()),d=c-this.startPos,b=this.dragHeadersDisabled;
	a.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+d);
	setTimeout(function(){
		a.headersDisabled=b
		},50)
	},
autoOffset:function(){
	this.setDelta(0,0)
	}
});
Ext.grid.PivotGridView=Ext.extend(Ext.grid.GridView,{
	colHeaderCellCls:"grid-hd-group-cell",
	title:"",
	getColumnHeaders:function(){
		return this.grid.topAxis.buildHeaders()
		},
	getRowHeaders:function(){
		return this.grid.leftAxis.buildHeaders()
		},
	renderRows:function(a,r){
		var b=this.grid,n=b.extractData(),o=n.length,e=this.templates,q=b.renderer,h=typeof q=="function",t=this.getCellCls,m=typeof t=="function",d=e.cell,u=e.row,k=[],p={},c="width:"+this.getGridInnerWidth()+"px;",l,g,s;
		a=a||0;
		r=Ext.isDefined(r)?r:o-1;
		for(s=0;s<o;s++){
			row=n[s];
			colCount=row.length;
			l=[];
			rowIndex=a+s;
			for(j=0;j<colCount;j++){
				cell=row[j];
				p.css=j===0?"x-grid3-cell-first ":(j==(colCount-1)?"x-grid3-cell-last ":"");
				p.attr=p.cellAttr="";
				p.value=cell;
				if(Ext.isEmpty(p.value)){
					p.value="&#160;"
					}
					if(h){
					p.value=q(p.value)
					}
					if(m){
					p.css+=t(p.value)+" "
					}
					l[l.length]=d.apply(p)
				}
				k[k.length]=u.apply({
				tstyle:c,
				cols:colCount,
				cells:l.join(""),
				alt:""
			})
			}
			return k.join("")
		},
	masterTpl:new Ext.Template('<div class="x-grid3 x-pivotgrid" hidefocus="true">','<div class="x-grid3-viewport">','<div class="x-grid3-header">','<div class="x-grid3-header-title"><span>{title}</span></div>','<div class="x-grid3-header-inner">','<div class="x-grid3-header-offset" style="{ostyle}"></div>',"</div>",'<div class="x-clear"></div>',"</div>",'<div class="x-grid3-scroller">','<div class="x-grid3-row-headers"></div>','<div class="x-grid3-body" style="{bstyle}">{body}</div>','<a href="#" class="x-grid3-focus" tabIndex="-1"></a>',"</div>","</div>",'<div class="x-grid3-resize-marker">&#160;</div>','<div class="x-grid3-resize-proxy">&#160;</div>',"</div>"),
	initTemplates:function(){
		Ext.grid.PivotGridView.superclass.initTemplates.apply(this,arguments);
		var a=this.templates||{};

		if(!a.gcell){
			a.gcell=new Ext.XTemplate('<td class="x-grid3-hd x-grid3-gcell x-grid3-td-{id} ux-grid-hd-group-row-{row} '+this.colHeaderCellCls+'" style="{style}">','<div {tooltip} class="x-grid3-hd-inner x-grid3-hd-{id}" unselectable="on" style="{istyle}">',this.grid.enableHdMenu?'<a class="x-grid3-hd-btn" href="#"></a>':"","{value}","</div>","</td>")
			}
			this.templates=a;
		this.hrowRe=new RegExp("ux-grid-hd-group-row-(\\d+)","")
		},
	initElements:function(){
		Ext.grid.PivotGridView.superclass.initElements.apply(this,arguments);
		this.rowHeadersEl=new Ext.Element(this.scroller.child("div.x-grid3-row-headers"));
		this.headerTitleEl=new Ext.Element(this.mainHd.child("div.x-grid3-header-title"))
		},
	getGridInnerWidth:function(){
		var a=Ext.grid.PivotGridView.superclass.getGridInnerWidth.apply(this,arguments);
		return a-this.getTotalRowHeaderWidth()
		},
	getTotalRowHeaderWidth:function(){
		var d=this.getRowHeaders(),c=d.length,b=0,a;
		for(a=0;a<c;a++){
			b+=d[a].width
			}
			return b
		},
	getTotalColumnHeaderHeight:function(){
		return this.getColumnHeaders().length*21
		},
	renderUI:function(){
		var b=this.templates,a=this.getGridInnerWidth();
		return b.master.apply({
			body:b.body.apply({
				rows:"&#160;"
			}),
			ostyle:"width:"+a+"px",
			bstyle:"width:"+a+"px"
			})
		},
	onLayout:function(b,a){
		Ext.grid.PivotGridView.superclass.onLayout.apply(this,arguments);
		var b=this.getGridInnerWidth();
		this.resizeColumnHeaders(b);
		this.resizeAllRows(b)
		},
	refresh:function(b){
		this.fireEvent("beforerefresh",this);
		this.grid.stopEditing(true);
		var a=this.renderBody();
		this.mainBody.update(a).setWidth(this.getGridInnerWidth());
		if(b===true){
			this.updateHeaders();
			this.updateHeaderSortState()
			}
			this.processRows(0,true);
		this.layout();
		this.applyEmptyText();
		this.fireEvent("refresh",this)
		},
	renderHeaders:Ext.emptyFn,
	fitColumns:Ext.emptyFn,
	resizeColumnHeaders:function(b){
		var a=this.grid.topAxis;
		if(a.rendered){
			a.el.setWidth(b)
			}
		},
resizeRowHeaders:function(){
	var a=this.getTotalRowHeaderWidth(),b=String.format("margin-left: {0}px;",a);
	this.rowHeadersEl.setWidth(a);
	this.mainBody.applyStyles(b);
	Ext.fly(this.innerHd).applyStyles(b);
	this.headerTitleEl.setWidth(a);
	this.headerTitleEl.setHeight(this.getTotalColumnHeaderHeight())
	},
resizeAllRows:function(b){
	var d=this.getRows(),c=d.length,a;
	for(a=0;a<c;a++){
		Ext.fly(d[a]).setWidth(b);
		Ext.fly(d[a]).child("table").setWidth(b)
		}
	},
updateHeaders:function(){
	this.renderGroupRowHeaders();
	this.renderGroupColumnHeaders()
	},
renderGroupRowHeaders:function(){
	var a=this.grid.leftAxis;
	this.resizeRowHeaders();
	a.rendered=false;
	a.render(this.rowHeadersEl);
	this.setTitle(this.title)
	},
setTitle:function(a){
	this.headerTitleEl.child("span").dom.innerHTML=a
	},
renderGroupColumnHeaders:function(){
	var a=this.grid.topAxis;
	a.rendered=false;
	a.render(this.innerHd.firstChild)
	},
isMenuDisabled:function(a,b){
	return true
	}
});
Ext.grid.PivotAxis=Ext.extend(Ext.Component,{
	orientation:"horizontal",
	defaultHeaderWidth:80,
	paddingWidth:7,
	setDimensions:function(a){
		this.dimensions=a
		},
	onRender:function(b,a){
		var c=this.orientation=="horizontal"?this.renderHorizontalRows():this.renderVerticalRows();
		this.el=Ext.DomHelper.overwrite(b.dom,{
			tag:"table",
			cn:c
		},true)
		},
	renderHorizontalRows:function(){
		var k=this.buildHeaders(),a=k.length,g=[],c,h,e,d,b;
		for(d=0;d<a;d++){
			c=[];
			h=k[d].items;
			e=h.length;
			for(b=0;b<e;b++){
				c.push({
					tag:"td",
					html:h[b].header,
					colspan:h[b].span
					})
				}
				g[d]={
				tag:"tr",
				cn:c
			}
		}
		return g
	},
renderVerticalRows:function(){
	var b=this.buildHeaders(),k=b.length,a=[],m=[],h,c,l,g,e,d;
	for(e=0;e<k;e++){
		c=b[e];
		g=c.width||80;
		h=c.items.length;
		for(d=0;d<h;d++){
			l=c.items[d];
			a[l.start]=a[l.start]||[];
			a[l.start].push({
				tag:"td",
				html:l.header,
				rowspan:l.span,
				width:Ext.isBorderBox?g:g-this.paddingWidth
				})
			}
		}
		h=a.length;
for(e=0;e<h;e++){
	m[e]={
		tag:"tr",
		cn:a[e]
		}
	}
return m
},
getTuples:function(){
	var b=new Ext.data.Store({});
	b.data=this.store.data.clone();
	b.fields=this.store.fields;
	var m=[],a=this.dimensions,c=a.length,k;
	for(k=0;k<c;k++){
		m.push({
			field:a[k].dataIndex,
			direction:a[k].direction||"ASC"
			})
		}
		b.sort(m);
	var e=b.data.items,o=[],l=[],p,h,d,g,n;
	c=e.length;
	for(k=0;k<c;k++){
		d=this.getRecordInfo(e[k]);
		g=d.data;
		h="";
		for(n in g){
			h+=g[n]+"---"
			}
			if(o.indexOf(h)==-1){
			o.push(h);
			l.push(d)
			}
		}
	b.destroy();
return l
},
getRecordInfo:function(a){
	var e=this.dimensions,d=e.length,h={},k,c,b;
	for(b=0;b<d;b++){
		k=e[b];
		c=k.dataIndex;
		h[c]=a.get(c)
		}
		var g=function(i){
		return function(l){
			for(var m in i){
				if(l.get(m)!=i[m]){
					return false
					}
				}
			return true
		}
	};

return{
	data:h,
	matcher:g(h)
	}
},
buildHeaders:function(){
	var k=this.getTuples(),l=k.length,a=this.dimensions,q=a.length,c=[],n,r,m,p,o,b,h,g,e,d;
	for(e=0;e<q;e++){
		dimension=a[e];
		r=[];
		o=0;
		b=0;
		for(d=0;d<l;d++){
			n=k[d];
			h=d==(l-1);
			m=n.data[dimension.dataIndex];
			g=p!=undefined&&p!=m;
			if(e>0&&d>0){
				g=g||n.data[a[e-1].dataIndex]!=k[d-1].data[a[e-1].dataIndex]
				}
				if(g){
				r.push({
					header:p,
					span:o,
					start:b
				});
				b+=o;
				o=0
				}
				if(h){
				r.push({
					header:m,
					span:o+1,
					start:b
				});
				b+=o;
				o=0
				}
				p=m;
			o++
		}
		c.push({
			items:r,
			width:dimension.width||this.defaultHeaderWidth
			});
		p=undefined
		}
		return c
	}
});
Ext.grid.HeaderDragZone=Ext.extend(Ext.dd.DragZone,{
	maxDragWidth:120,
	constructor:function(a,c,b){
		this.grid=a;
		this.view=a.getView();
		this.ddGroup="gridHeader"+this.grid.getGridEl().id;
		Ext.grid.HeaderDragZone.superclass.constructor.call(this,c);
		if(b){
			this.setHandleElId(Ext.id(c));
			this.setOuterHandleElId(Ext.id(b))
			}
			this.scroll=false
		},
	getDragData:function(c){
		var a=Ext.lib.Event.getTarget(c),b=this.view.findHeaderCell(a);
		if(b){
			return{
				ddel:b.firstChild,
				header:b
			}
		}
		return false
	},
onInitDrag:function(a){
	this.dragHeadersDisabled=this.view.headersDisabled;
	this.view.headersDisabled=true;
	var b=this.dragData.ddel.cloneNode(true);
	b.id=Ext.id();
	b.style.width=Math.min(this.dragData.header.offsetWidth,this.maxDragWidth)+"px";
	this.proxy.update(b);
	return true
	},
afterValidDrop:function(){
	this.completeDrop()
	},
afterInvalidDrop:function(){
	this.completeDrop()
	},
completeDrop:function(){
	var a=this.view,b=this.dragHeadersDisabled;
	setTimeout(function(){
		a.headersDisabled=b
		},50)
	}
});
Ext.grid.HeaderDropZone=Ext.extend(Ext.dd.DropZone,{
	proxyOffsets:[-4,-9],
	fly:Ext.Element.fly,
	constructor:function(a,c,b){
		this.grid=a;
		this.view=a.getView();
		this.proxyTop=Ext.DomHelper.append(document.body,{
			cls:"col-move-top",
			html:"&#160;"
		},true);
		this.proxyBottom=Ext.DomHelper.append(document.body,{
			cls:"col-move-bottom",
			html:"&#160;"
		},true);
		this.proxyTop.hide=this.proxyBottom.hide=function(){
			this.setLeftTop(-100,-100);
			this.setStyle("visibility","hidden")
			};

		this.ddGroup="gridHeader"+this.grid.getGridEl().id;
		Ext.grid.HeaderDropZone.superclass.constructor.call(this,a.getGridEl().dom)
		},
	getTargetFromEvent:function(c){
		var a=Ext.lib.Event.getTarget(c),b=this.view.findCellIndex(a);
		if(b!==false){
			return this.view.getHeaderCell(b)
			}
		},
nextVisible:function(c){
	var b=this.view,a=this.grid.colModel;
	c=c.nextSibling;
	while(c){
		if(!a.isHidden(b.getCellIndex(c))){
			return c
			}
			c=c.nextSibling
		}
		return null
	},
prevVisible:function(c){
	var b=this.view,a=this.grid.colModel;
	c=c.prevSibling;
	while(c){
		if(!a.isHidden(b.getCellIndex(c))){
			return c
			}
			c=c.prevSibling
		}
		return null
	},
positionIndicator:function(d,l,k){
	var a=Ext.lib.Event.getPageX(k),g=Ext.lib.Dom.getRegion(l.firstChild),c,i,b=g.top+this.proxyOffsets[1];
	if((g.right-a)<=(g.right-g.left)/2){
		c=g.right+this.view.borderWidth;
		i="after"
		}else{
		c=g.left;
		i="before"
		}
		if(this.grid.colModel.isFixed(this.view.getCellIndex(l))){
		return false
		}
		c+=this.proxyOffsets[0];
	this.proxyTop.setLeftTop(c,b);
	this.proxyTop.show();
	if(!this.bottomOffset){
		this.bottomOffset=this.view.mainHd.getHeight()
		}
		this.proxyBottom.setLeftTop(c,b+this.proxyTop.dom.offsetHeight+this.bottomOffset);
	this.proxyBottom.show();
	return i
	},
onNodeEnter:function(d,a,c,b){
	if(b.header!=d){
		this.positionIndicator(b.header,d,c)
		}
	},
onNodeOver:function(g,b,d,c){
	var a=false;
	if(c.header!=g){
		a=this.positionIndicator(c.header,g,d)
		}
		if(!a){
		this.proxyTop.hide();
		this.proxyBottom.hide()
		}
		return a?this.dropAllowed:this.dropNotAllowed
	},
onNodeOut:function(d,a,c,b){
	this.proxyTop.hide();
	this.proxyBottom.hide()
	},
onNodeDrop:function(b,o,g,c){
	var d=c.header;
	if(d!=b){
		var l=this.grid.colModel,k=Ext.lib.Event.getPageX(g),a=Ext.lib.Dom.getRegion(b.firstChild),p=(a.right-k)<=((a.right-a.left)/2)?"after":"before",i=this.view.getCellIndex(d),m=this.view.getCellIndex(b);
		if(p=="after"){
			m++
		}
		if(i<m){
			m--
		}
		l.moveColumn(i,m);
		return true
		}
		return false
	}
});
Ext.grid.GridView.ColumnDragZone=Ext.extend(Ext.grid.HeaderDragZone,{
	constructor:function(a,b){
		Ext.grid.GridView.ColumnDragZone.superclass.constructor.call(this,a,b,null);
		this.proxy.el.addClass("x-grid3-col-dd")
		},
	handleMouseDown:function(a){},
	callHandleMouseDown:function(a){
		Ext.grid.GridView.ColumnDragZone.superclass.handleMouseDown.call(this,a)
		}
	});
Ext.grid.SplitDragZone=Ext.extend(Ext.dd.DDProxy,{
	fly:Ext.Element.fly,
	constructor:function(a,c,b){
		this.grid=a;
		this.view=a.getView();
		this.proxy=this.view.resizeProxy;
		Ext.grid.SplitDragZone.superclass.constructor.call(this,c,"gridSplitters"+this.grid.getGridEl().id,{
			dragElId:Ext.id(this.proxy.dom),
			resizeFrame:false
		});
		this.setHandleElId(Ext.id(c));
		this.setOuterHandleElId(Ext.id(b));
		this.scroll=false
		},
	b4StartDrag:function(a,d){
		this.view.headersDisabled=true;
		this.proxy.setHeight(this.view.mainWrap.getHeight());
		var b=this.cm.getColumnWidth(this.cellIndex);
		var c=Math.max(b-this.grid.minColumnWidth,0);
		this.resetConstraints();
		this.setXConstraint(c,1000);
		this.setYConstraint(0,0);
		this.minX=a-c;
		this.maxX=a+1000;
		this.startPos=a;
		Ext.dd.DDProxy.prototype.b4StartDrag.call(this,a,d)
		},
	handleMouseDown:function(c){
		var b=Ext.EventObject.setEvent(c);
		var a=this.fly(b.getTarget());
		if(a.hasClass("x-grid-split")){
			this.cellIndex=this.view.getCellIndex(a.dom);
			this.split=a.dom;
			this.cm=this.grid.colModel;
			if(this.cm.isResizable(this.cellIndex)&&!this.cm.isFixed(this.cellIndex)){
				Ext.grid.SplitDragZone.superclass.handleMouseDown.apply(this,arguments)
				}
			}
	},
endDrag:function(c){
	this.view.headersDisabled=false;
	var a=Math.max(this.minX,Ext.lib.Event.getPageX(c));
	var b=a-this.startPos;
	this.view.onColumnSplitterMoved(this.cellIndex,this.cm.getColumnWidth(this.cellIndex)+b)
	},
autoOffset:function(){
	this.setDelta(0,0)
	}
});
Ext.grid.GridDragZone=function(b,a){
	this.view=b.getView();
	Ext.grid.GridDragZone.superclass.constructor.call(this,this.view.mainBody.dom,a);
	this.scroll=false;
	this.grid=b;
	this.ddel=document.createElement("div");
	this.ddel.className="x-grid-dd-wrap"
	};

Ext.extend(Ext.grid.GridDragZone,Ext.dd.DragZone,{
	ddGroup:"GridDD",
	getDragData:function(b){
		var a=Ext.lib.Event.getTarget(b);
		var d=this.view.findRowIndex(a);
		if(d!==false){
			var c=this.grid.selModel;
			if(!c.isSelected(d)||b.hasModifier()){
				c.handleMouseDown(this.grid,d,b)
				}
				return{
				grid:this.grid,
				ddel:this.ddel,
				rowIndex:d,
				selections:c.getSelections()
				}
			}
		return false
	},
onInitDrag:function(b){
	var a=this.dragData;
	this.ddel.innerHTML=this.grid.getDragDropText();
	this.proxy.update(this.ddel)
	},
afterRepair:function(){
	this.dragging=false
	},
getRepairXY:function(b,a){
	return false
	},
onEndDrag:function(a,b){},
	onValidDrop:function(a,b,c){
	this.hideProxy()
	},
beforeInvalidDrop:function(a,b){}
	});
Ext.grid.ColumnModel=Ext.extend(Ext.util.Observable,{
	defaultWidth:100,
	defaultSortable:false,
	constructor:function(a){
		if(a.columns){
			Ext.apply(this,a);
			this.setConfig(a.columns,true)
			}else{
			this.setConfig(a,true)
			}
			this.addEvents("widthchange","headerchange","hiddenchange","columnmoved","configchange");
		Ext.grid.ColumnModel.superclass.constructor.call(this)
		},
	getColumnId:function(a){
		return this.config[a].id
		},
	getColumnAt:function(a){
		return this.config[a]
		},
	setConfig:function(d,b){
		var e,h,a;
		if(!b){
			delete this.totalWidth;
			for(e=0,a=this.config.length;e<a;e++){
				h=this.config[e];
				if(h.setEditor){
					h.setEditor(null)
					}
				}
			}
		this.defaults=Ext.apply({
	width:this.defaultWidth,
	sortable:this.defaultSortable
	},this.defaults);
this.config=d;
this.lookup={};

for(e=0,a=d.length;e<a;e++){
	h=Ext.applyIf(d[e],this.defaults);
	if(Ext.isEmpty(h.id)){
		h.id=e
		}
		if(!h.isColumn){
		var g=Ext.grid.Column.types[h.xtype||"gridcolumn"];
		h=new g(h);
		d[e]=h
		}
		this.lookup[h.id]=h
	}
	if(!b){
	this.fireEvent("configchange",this)
	}
},
getColumnById:function(a){
	return this.lookup[a]
	},
getIndexById:function(c){
	for(var b=0,a=this.config.length;b<a;b++){
		if(this.config[b].id==c){
			return b
			}
		}
	return -1
},
moveColumn:function(e,b){
	var a=this.config,d=a[e];
	a.splice(e,1);
	a.splice(b,0,d);
	this.dataMap=null;
	this.fireEvent("columnmoved",this,e,b)
	},
getColumnCount:function(b){
	var d=this.config.length,e=0,a;
	if(b===true){
		for(a=0;a<d;a++){
			if(!this.isHidden(a)){
				e++
			}
		}
		return e
	}
	return d
},
getColumnsBy:function(g,e){
	var b=this.config,h=b.length,a=[],d,k;
	for(d=0;d<h;d++){
		k=b[d];
		if(g.call(e||this,k,d)===true){
			a[a.length]=k
			}
		}
	return a
},
isSortable:function(a){
	return !!this.config[a].sortable
	},
isMenuDisabled:function(a){
	return !!this.config[a].menuDisabled
	},
getRenderer:function(a){
	return this.config[a].renderer||Ext.grid.ColumnModel.defaultRenderer
	},
getRendererScope:function(a){
	return this.config[a].scope
	},
setRenderer:function(a,b){
	this.config[a].renderer=b
	},
getColumnWidth:function(a){
	var b=this.config[a].width;
	if(typeof b!="number"){
		b=this.defaultWidth
		}
		return b
	},
setColumnWidth:function(b,c,a){
	this.config[b].width=c;
	this.totalWidth=null;
	if(!a){
		this.fireEvent("widthchange",this,b,c)
		}
	},
getTotalWidth:function(b){
	if(!this.totalWidth){
		this.totalWidth=0;
		for(var c=0,a=this.config.length;c<a;c++){
			if(b||!this.isHidden(c)){
				this.totalWidth+=this.getColumnWidth(c)
				}
			}
		}
	return this.totalWidth
},
getColumnHeader:function(a){
	return this.config[a].header
	},
setColumnHeader:function(a,b){
	this.config[a].header=b;
	this.fireEvent("headerchange",this,a,b)
	},
getColumnTooltip:function(a){
	return this.config[a].tooltip
	},
setColumnTooltip:function(a,b){
	this.config[a].tooltip=b
	},
getDataIndex:function(a){
	return this.config[a].dataIndex
	},
setDataIndex:function(a,b){
	this.config[a].dataIndex=b
	},
findColumnIndex:function(d){
	var e=this.config;
	for(var b=0,a=e.length;b<a;b++){
		if(e[b].dataIndex==d){
			return b
			}
		}
	return -1
},
isCellEditable:function(b,e){
	var d=this.config[b],a=d.editable;
	return !!(a||(!Ext.isDefined(a)&&d.editor))
	},
getCellEditor:function(a,b){
	return this.config[a].getCellEditor(b)
	},
setEditable:function(a,b){
	this.config[a].editable=b
	},
isHidden:function(a){
	return !!this.config[a].hidden
	},
isFixed:function(a){
	return !!this.config[a].fixed
	},
isResizable:function(a){
	return a>=0&&this.config[a].resizable!==false&&this.config[a].fixed!==true
	},
setHidden:function(a,b){
	var d=this.config[a];
	if(d.hidden!==b){
		d.hidden=b;
		this.totalWidth=null;
		this.fireEvent("hiddenchange",this,a,b)
		}
	},
setEditor:function(a,b){
	this.config[a].setEditor(b)
	},
destroy:function(){
	var b=this.config.length,a=0;
	for(;a<b;a++){
		this.config[a].destroy()
		}
		delete this.config;
	delete this.lookup;
	this.purgeListeners()
	},
setState:function(a,b){
	b=Ext.applyIf(b,this.defaults);
	Ext.apply(this.config[a],b)
	}
});
Ext.grid.ColumnModel.defaultRenderer=function(a){
	if(typeof a=="string"&&a.length<1){
		return"&#160;"
		}
		return a
	};

Ext.grid.AbstractSelectionModel=Ext.extend(Ext.util.Observable,{
	constructor:function(){
		this.locked=false;
		Ext.grid.AbstractSelectionModel.superclass.constructor.call(this)
		},
	init:function(a){
		this.grid=a;
		if(this.lockOnInit){
			delete this.lockOnInit;
			this.locked=false;
			this.lock()
			}
			this.initEvents()
		},
	lock:function(){
		if(!this.locked){
			this.locked=true;
			var a=this.grid;
			if(a){
				a.getView().on({
					scope:this,
					beforerefresh:this.sortUnLock,
					refresh:this.sortLock
					})
				}else{
				this.lockOnInit=true
				}
			}
	},
sortLock:function(){
	this.locked=true
	},
sortUnLock:function(){
	this.locked=false
	},
unlock:function(){
	if(this.locked){
		this.locked=false;
		var a=this.grid,b;
		if(a){
			b=a.getView();
			b.un("beforerefresh",this.sortUnLock,this);
			b.un("refresh",this.sortLock,this)
			}else{
			delete this.lockOnInit
			}
		}
},
isLocked:function(){
	return this.locked
	},
destroy:function(){
	this.unlock();
	this.purgeListeners()
	}
});
Ext.grid.RowSelectionModel=Ext.extend(Ext.grid.AbstractSelectionModel,{
	singleSelect:false,
	constructor:function(a){
		Ext.apply(this,a);
		this.selections=new Ext.util.MixedCollection(false,function(b){
			return b.id
			});
		this.last=false;
		this.lastActive=false;
		this.addEvents("selectionchange","beforerowselect","rowselect","rowdeselect");
		Ext.grid.RowSelectionModel.superclass.constructor.call(this)
		},
	initEvents:function(){
		if(!this.grid.enableDragDrop&&!this.grid.enableDrag){
			this.grid.on("rowmousedown",this.handleMouseDown,this)
			}
			this.rowNav=new Ext.KeyNav(this.grid.getGridEl(),{
			up:this.onKeyPress,
			down:this.onKeyPress,
			scope:this
		});
		this.grid.getView().on({
			scope:this,
			refresh:this.onRefresh,
			rowupdated:this.onRowUpdated,
			rowremoved:this.onRemove
			})
		},
	onKeyPress:function(g,b){
		var a=b=="up",h=a?"selectPrevious":"selectNext",d=a?-1:1,c;
		if(!g.shiftKey||this.singleSelect){
			this[h](false)
			}else{
			if(this.last!==false&&this.lastActive!==false){
				c=this.last;
				this.selectRange(this.last,this.lastActive+d);
				this.grid.getView().focusRow(this.lastActive);
				if(c!==false){
					this.last=c
					}
				}else{
			this.selectFirstRow()
			}
		}
},
onRefresh:function(){
	var g=this.grid.store,d=this.getSelections(),c=0,a=d.length,b,e;
	this.silent=true;
	this.clearSelections(true);
	for(;c<a;c++){
		e=d[c];
		if((b=g.indexOfId(e.id))!=-1){
			this.selectRow(b,true)
			}
		}
	if(d.length!=this.selections.getCount()){
	this.fireEvent("selectionchange",this)
	}
	this.silent=false
},
onRemove:function(a,b,c){
	if(this.selections.remove(c)!==false){
		this.fireEvent("selectionchange",this)
		}
	},
onRowUpdated:function(a,b,c){
	if(this.isSelected(c)){
		a.onRowSelect(b)
		}
	},
selectRecords:function(b,e){
	if(!e){
		this.clearSelections()
		}
		var d=this.grid.store,c=0,a=b.length;
	for(;c<a;c++){
		this.selectRow(d.indexOf(b[c]),true)
		}
	},
getCount:function(){
	return this.selections.length
	},
selectFirstRow:function(){
	this.selectRow(0)
	},
selectLastRow:function(a){
	this.selectRow(this.grid.store.getCount()-1,a)
	},
selectNext:function(a){
	if(this.hasNext()){
		this.selectRow(this.last+1,a);
		this.grid.getView().focusRow(this.last);
		return true
		}
		return false
	},
selectPrevious:function(a){
	if(this.hasPrevious()){
		this.selectRow(this.last-1,a);
		this.grid.getView().focusRow(this.last);
		return true
		}
		return false
	},
hasNext:function(){
	return this.last!==false&&(this.last+1)<this.grid.store.getCount()
	},
hasPrevious:function(){
	return !!this.last
	},
getSelections:function(){
	return[].concat(this.selections.items)
	},
getSelected:function(){
	return this.selections.itemAt(0)
	},
each:function(e,d){
	var c=this.getSelections(),b=0,a=c.length;
	for(;b<a;b++){
		if(e.call(d||this,c[b],b)===false){
			return false
			}
		}
	return true
},
clearSelections:function(a){
	if(this.isLocked()){
		return
	}
	if(a!==true){
		var c=this.grid.store,b=this.selections;
		b.each(function(d){
			this.deselectRow(c.indexOfId(d.id))
			},this);
		b.clear()
		}else{
		this.selections.clear()
		}
		this.last=false
	},
selectAll:function(){
	if(this.isLocked()){
		return
	}
	this.selections.clear();
	for(var b=0,a=this.grid.store.getCount();b<a;b++){
		this.selectRow(b,true)
		}
	},
hasSelection:function(){
	return this.selections.length>0
	},
isSelected:function(a){
	var b=Ext.isNumber(a)?this.grid.store.getAt(a):a;
	return(b&&this.selections.key(b.id)?true:false)
	},
isIdSelected:function(a){
	return(this.selections.key(a)?true:false)
	},
handleMouseDown:function(d,i,h){
	if(h.button!==0||this.isLocked()){
		return
	}
	var a=this.grid.getView();
	if(h.shiftKey&&!this.singleSelect&&this.last!==false){
		var c=this.last;
		this.selectRange(c,i,h.ctrlKey);
		this.last=c;
		a.focusRow(i)
		}else{
		var b=this.isSelected(i);
		if(h.ctrlKey&&b){
			this.deselectRow(i)
			}else{
			if(!b||this.getCount()>1){
				this.selectRow(i,h.ctrlKey||h.shiftKey);
				a.focusRow(i)
				}
			}
	}
},
selectRows:function(c,d){
	if(!d){
		this.clearSelections()
		}
		for(var b=0,a=c.length;b<a;b++){
		this.selectRow(c[b],true)
		}
	},
selectRange:function(b,a,d){
	var c;
	if(this.isLocked()){
		return
	}
	if(!d){
		this.clearSelections()
		}
		if(b<=a){
		for(c=b;c<=a;c++){
			this.selectRow(c,true)
			}
		}else{
	for(c=b;c>=a;c--){
		this.selectRow(c,true)
		}
	}
},
deselectRange:function(c,b,a){
	if(this.isLocked()){
		return
	}
	for(var d=c;d<=b;d++){
		this.deselectRow(d,a)
		}
	},
selectRow:function(b,d,a){
	if(this.isLocked()||(b<0||b>=this.grid.store.getCount())||(d&&this.isSelected(b))){
		return
	}
	var c=this.grid.store.getAt(b);
	if(c&&this.fireEvent("beforerowselect",this,b,d,c)!==false){
		if(!d||this.singleSelect){
			this.clearSelections()
			}
			this.selections.add(c);
		this.last=this.lastActive=b;
		if(!a){
			this.grid.getView().onRowSelect(b)
			}
			if(!this.silent){
			this.fireEvent("rowselect",this,b,c);
			this.fireEvent("selectionchange",this)
			}
		}
},
deselectRow:function(b,a){
	if(this.isLocked()){
		return
	}
	if(this.last==b){
		this.last=false
		}
		if(this.lastActive==b){
		this.lastActive=false
		}
		var c=this.grid.store.getAt(b);
	if(c){
		this.selections.remove(c);
		if(!a){
			this.grid.getView().onRowDeselect(b)
			}
			this.fireEvent("rowdeselect",this,b,c);
		this.fireEvent("selectionchange",this)
		}
	},
acceptsNav:function(c,b,a){
	return !a.isHidden(b)&&a.isCellEditable(b,c)
	},
onEditorKey:function(o,m){
	var d=m.getKey(),h,i=this.grid,q=i.lastEdit,l=i.activeEditor,b=m.shiftKey,p,q,a,n;
	if(d==m.TAB){
		m.stopEvent();
		l.completeEdit();
		if(b){
			h=i.walkCells(l.row,l.col-1,-1,this.acceptsNav,this)
			}else{
			h=i.walkCells(l.row,l.col+1,1,this.acceptsNav,this)
			}
		}else{
	if(d==m.ENTER){
		if(this.moveEditorOnEnter!==false){
			if(b){
				h=i.walkCells(q.row-1,q.col,-1,this.acceptsNav,this)
				}else{
				h=i.walkCells(q.row+1,q.col,1,this.acceptsNav,this)
				}
			}
	}
}
if(h){
	a=h[0];
	n=h[1];
	this.onEditorSelect(a,q.row);
	if(i.isEditor&&i.editing){
		p=i.activeEditor;
		if(p&&p.field.triggerBlur){
			p.field.triggerBlur()
			}
		}
	i.startEditing(a,n)
}
},
onEditorSelect:function(b,a){
	if(a!=b){
		this.selectRow(b)
		}
	},
destroy:function(){
	Ext.destroy(this.rowNav);
	this.rowNav=null;
	Ext.grid.RowSelectionModel.superclass.destroy.call(this)
	}
});
Ext.grid.Column=Ext.extend(Ext.util.Observable,{
	isColumn:true,
	constructor:function(b){
		Ext.apply(this,b);
		if(Ext.isString(this.renderer)){
			this.renderer=Ext.util.Format[this.renderer]
			}else{
			if(Ext.isObject(this.renderer)){
				this.scope=this.renderer.scope;
				this.renderer=this.renderer.fn
				}
			}
		if(!this.scope){
		this.scope=this
		}
		var a=this.editor;
	delete this.editor;
	this.setEditor(a);
	this.addEvents("click","contextmenu","dblclick","mousedown");
	Ext.grid.Column.superclass.constructor.call(this)
	},
processEvent:function(b,d,c,g,a){
	return this.fireEvent(b,this,c,g,d)
	},
destroy:function(){
	if(this.setEditor){
		this.setEditor(null)
		}
		this.purgeListeners()
	},
renderer:function(a){
	return a
	},
getEditor:function(a){
	return this.editable!==false?this.editor:null
	},
setEditor:function(b){
	var a=this.editor;
	if(a){
		if(a.gridEditor){
			a.gridEditor.destroy();
			delete a.gridEditor
			}else{
			a.destroy()
			}
		}
	this.editor=null;
if(b){
	if(!b.isXType){
		b=Ext.create(b,"textfield")
		}
		this.editor=b
	}
},
getCellEditor:function(b){
	var a=this.getEditor(b);
	if(a){
		if(!a.startEdit){
			if(!a.gridEditor){
				a.gridEditor=new Ext.grid.GridEditor(a)
				}
				a=a.gridEditor
			}
		}
	return a
}
});
Ext.grid.BooleanColumn=Ext.extend(Ext.grid.Column,{
	trueText:"true",
	falseText:"false",
	undefinedText:"&#160;",
	constructor:function(a){
		Ext.grid.BooleanColumn.superclass.constructor.call(this,a);
		var c=this.trueText,d=this.falseText,b=this.undefinedText;
		this.renderer=function(e){
			if(e===undefined){
				return b
				}
				if(!e||e==="false"){
				return d
				}
				return c
			}
		}
});
Ext.grid.NumberColumn=Ext.extend(Ext.grid.Column,{
	format:"0,000.00",
	constructor:function(a){
		Ext.grid.NumberColumn.superclass.constructor.call(this,a);
		this.renderer=Ext.util.Format.numberRenderer(this.format)
		}
	});
Ext.grid.DateColumn=Ext.extend(Ext.grid.Column,{
	format:"m/d/Y",
	constructor:function(a){
		Ext.grid.DateColumn.superclass.constructor.call(this,a);
		this.renderer=Ext.util.Format.dateRenderer(this.format)
		}
	});
Ext.grid.TemplateColumn=Ext.extend(Ext.grid.Column,{
	constructor:function(a){
		Ext.grid.TemplateColumn.superclass.constructor.call(this,a);
		var b=(!Ext.isPrimitive(this.tpl)&&this.tpl.compile)?this.tpl:new Ext.XTemplate(this.tpl);
		this.renderer=function(d,e,c){
			return b.apply(c.data)
			};

		this.tpl=b
		}
	});
Ext.grid.ActionColumn=Ext.extend(Ext.grid.Column,{
	header:"&#160;",
	actionIdRe:/x-action-col-(\d+)/,
	altText:"",
	constructor:function(b){
		var g=this,c=b.items||(g.items=[g]),a=c.length,d,e;
		Ext.grid.ActionColumn.superclass.constructor.call(g,b);
		g.renderer=function(h,i){
			h=Ext.isFunction(b.renderer)?b.renderer.apply(this,arguments)||"":"";
			i.css+=" x-action-col-cell";
			for(d=0;d<a;d++){
				e=c[d];
				h+='<img alt="'+g.altText+'" src="'+(e.icon||Ext.BLANK_IMAGE_URL)+'" class="x-action-col-icon x-action-col-'+String(d)+" "+(e.iconCls||"")+" "+(Ext.isFunction(e.getClass)?e.getClass.apply(e.scope||this.scope||this,arguments):"")+'"'+((e.tooltip)?' ext:qtip="'+e.tooltip+'"':"")+" />"
				}
				return h
			}
		},
destroy:function(){
	delete this.items;
	delete this.renderer;
	return Ext.grid.ActionColumn.superclass.destroy.apply(this,arguments)
	},
processEvent:function(c,i,d,k,b){
	var a=i.getTarget().className.match(this.actionIdRe),h,g;
	if(a&&(h=this.items[parseInt(a[1],10)])){
		if(c=="click"){
			(g=h.handler||this.handler)&&g.call(h.scope||this.scope||this,d,k,b,h,i)
			}else{
			if((c=="mousedown")&&(h.stopSelection!==false)){
				return false
				}
			}
	}
return Ext.grid.ActionColumn.superclass.processEvent.apply(this,arguments)
	}
});
Ext.grid.Column.types={
	gridcolumn:Ext.grid.Column,
	booleancolumn:Ext.grid.BooleanColumn,
	numbercolumn:Ext.grid.NumberColumn,
	datecolumn:Ext.grid.DateColumn,
	templatecolumn:Ext.grid.TemplateColumn,
	actioncolumn:Ext.grid.ActionColumn
	};

Ext.grid.RowNumberer=Ext.extend(Object,{
	header:"",
	width:23,
	sortable:false,
	constructor:function(a){
		Ext.apply(this,a);
		if(this.rowspan){
			this.renderer=this.renderer.createDelegate(this)
			}
		},
fixed:true,
hideable:false,
menuDisabled:true,
dataIndex:"",
id:"numberer",
rowspan:undefined,
renderer:function(b,c,a,d){
	if(this.rowspan){
		c.cellAttr='rowspan="'+this.rowspan+'"'
		}
		return d+1
	}
});
Ext.grid.CheckboxSelectionModel=Ext.extend(Ext.grid.RowSelectionModel,{
	header:'<div class="x-grid3-hd-checker">&#160;</div>',
	width:20,
	sortable:false,
	menuDisabled:true,
	fixed:true,
	hideable:false,
	dataIndex:"",
	id:"checker",
	isColumn:true,
	constructor:function(){
		Ext.grid.CheckboxSelectionModel.superclass.constructor.apply(this,arguments);
		if(this.checkOnly){
			this.handleMouseDown=Ext.emptyFn
			}
		},
initEvents:function(){
	Ext.grid.CheckboxSelectionModel.superclass.initEvents.call(this);
	this.grid.on("render",function(){
		Ext.fly(this.grid.getView().innerHd).on("mousedown",this.onHdMouseDown,this)
		},this)
	},
processEvent:function(b,d,c,g,a){
	if(b=="mousedown"){
		this.onMouseDown(d,d.getTarget());
		return false
		}else{
		return Ext.grid.Column.prototype.processEvent.apply(this,arguments)
		}
	},
onMouseDown:function(c,b){
	if(c.button===0&&b.className=="x-grid3-row-checker"){
		c.stopEvent();
		var d=c.getTarget(".x-grid3-row");
		if(d){
			var a=d.rowIndex;
			if(this.isSelected(a)){
				this.deselectRow(a)
				}else{
				this.selectRow(a,true);
				this.grid.getView().focusRow(a)
				}
			}
	}
},
onHdMouseDown:function(c,a){
	if(a.className=="x-grid3-hd-checker"){
		c.stopEvent();
		var b=Ext.fly(a.parentNode);
		var d=b.hasClass("x-grid3-hd-checker-on");
		if(d){
			b.removeClass("x-grid3-hd-checker-on");
			this.clearSelections()
			}else{
			b.addClass("x-grid3-hd-checker-on");
			this.selectAll()
			}
		}
},
renderer:function(b,c,a){
	return'<div class="x-grid3-row-checker">&#160;</div>'
	},
onEditorSelect:function(b,a){
	if(a!=b&&!this.checkOnly){
		this.selectRow(b)
		}
	}
});
Ext.grid.CellSelectionModel=Ext.extend(Ext.grid.AbstractSelectionModel,{
	constructor:function(a){
		Ext.apply(this,a);
		this.selection=null;
		this.addEvents("beforecellselect","cellselect","selectionchange");
		Ext.grid.CellSelectionModel.superclass.constructor.call(this)
		},
	initEvents:function(){
		this.grid.on("cellmousedown",this.handleMouseDown,this);
		this.grid.on(Ext.EventManager.getKeyEvent(),this.handleKeyDown,this);
		this.grid.getView().on({
			scope:this,
			refresh:this.onViewChange,
			rowupdated:this.onRowUpdated,
			beforerowremoved:this.clearSelections,
			beforerowsinserted:this.clearSelections
			});
		if(this.grid.isEditor){
			this.grid.on("beforeedit",this.beforeEdit,this)
			}
		},
beforeEdit:function(a){
	this.select(a.row,a.column,false,true,a.record)
	},
onRowUpdated:function(a,b,c){
	if(this.selection&&this.selection.record==c){
		a.onCellSelect(b,this.selection.cell[1])
		}
	},
onViewChange:function(){
	this.clearSelections(true)
	},
getSelectedCell:function(){
	return this.selection?this.selection.cell:null
	},
clearSelections:function(b){
	var a=this.selection;
	if(a){
		if(b!==true){
			this.grid.view.onCellDeselect(a.cell[0],a.cell[1])
			}
			this.selection=null;
		this.fireEvent("selectionchange",this,null)
		}
	},
hasSelection:function(){
	return this.selection?true:false
	},
handleMouseDown:function(b,d,a,c){
	if(c.button!==0||this.isLocked()){
		return
	}
	this.select(d,a)
	},
select:function(g,c,b,e,d){
	if(this.fireEvent("beforecellselect",this,g,c)!==false){
		this.clearSelections();
		d=d||this.grid.store.getAt(g);
		this.selection={
			record:d,
			cell:[g,c]
			};

		if(!b){
			var a=this.grid.getView();
			a.onCellSelect(g,c);
			if(e!==true){
				a.focusCell(g,c)
				}
			}
		this.fireEvent("cellselect",this,g,c);
	this.fireEvent("selectionchange",this,this.selection)
	}
},
isSelectable:function(c,b,a){
	return !a.isHidden(b)
	},
onEditorKey:function(b,a){
	if(a.getKey()==a.TAB){
		this.handleKeyDown(a)
		}
	},
handleKeyDown:function(l){
	if(!l.isNavKeyPress()){
		return
	}
	var d=l.getKey(),i=this.grid,q=this.selection,b=this,n=function(g,c,e){
		return i.walkCells(g,c,e,i.isEditor&&i.editing?b.acceptsNav:b.isSelectable,b)
		},p,h,a,m,o;
	switch(d){
		case l.ESC:case l.PAGE_UP:case l.PAGE_DOWN:
			break;
		default:
			l.stopEvent();
			break
			}
			if(!q){
		p=n(0,0,1);
		if(p){
			this.select(p[0],p[1])
			}
			return
	}
	p=q.cell;
	a=p[0];
	m=p[1];
	switch(d){
		case l.TAB:
			if(l.shiftKey){
			h=n(a,m-1,-1)
			}else{
			h=n(a,m+1,1)
			}
			break;
		case l.DOWN:
			h=n(a+1,m,1);
			break;
		case l.UP:
			h=n(a-1,m,-1);
			break;
		case l.RIGHT:
			h=n(a,m+1,1);
			break;
		case l.LEFT:
			h=n(a,m-1,-1);
			break;
		case l.ENTER:
			if(i.isEditor&&!i.editing){
			i.startEditing(a,m);
			return
		}
		break
		}
		if(h){
		a=h[0];
		m=h[1];
		this.select(a,m);
		if(i.isEditor&&i.editing){
			o=i.activeEditor;
			if(o&&o.field.triggerBlur){
				o.field.triggerBlur()
				}
				i.startEditing(a,m)
			}
		}
},
acceptsNav:function(c,b,a){
	return !a.isHidden(b)&&a.isCellEditable(b,c)
	}
});
Ext.grid.EditorGridPanel=Ext.extend(Ext.grid.GridPanel,{
	clicksToEdit:2,
	forceValidation:false,
	isEditor:true,
	detectEdit:false,
	autoEncode:false,
	trackMouseOver:false,
	initComponent:function(){
		Ext.grid.EditorGridPanel.superclass.initComponent.call(this);
		if(!this.selModel){
			this.selModel=new Ext.grid.CellSelectionModel()
			}
			this.activeEditor=null;
		this.addEvents("beforeedit","afteredit","validateedit")
		},
	initEvents:function(){
		Ext.grid.EditorGridPanel.superclass.initEvents.call(this);
		this.getGridEl().on("mousewheel",this.stopEditing.createDelegate(this,[true]),this);
		this.on("columnresize",this.stopEditing,this,[true]);
		if(this.clicksToEdit==1){
			this.on("cellclick",this.onCellDblClick,this)
			}else{
			var a=this.getView();
			if(this.clicksToEdit=="auto"&&a.mainBody){
				a.mainBody.on("mousedown",this.onAutoEditClick,this)
				}
				this.on("celldblclick",this.onCellDblClick,this)
			}
		},
onResize:function(){
	Ext.grid.EditorGridPanel.superclass.onResize.apply(this,arguments);
	var a=this.activeEditor;
	if(this.editing&&a){
		a.realign(true)
		}
	},
onCellDblClick:function(b,c,a){
	this.startEditing(c,a)
	},
onAutoEditClick:function(c,b){
	if(c.button!==0){
		return
	}
	var g=this.view.findRowIndex(b),a=this.view.findCellIndex(b);
	if(g!==false&&a!==false){
		this.stopEditing();
		if(this.selModel.getSelectedCell){
			var d=this.selModel.getSelectedCell();
			if(d&&d[0]===g&&d[1]===a){
				this.startEditing(g,a)
				}
			}else{
		if(this.selModel.isSelected(g)){
			this.startEditing(g,a)
			}
		}
}
},
onEditComplete:function(b,d,a){
	this.editing=false;
	this.lastActiveEditor=this.activeEditor;
	this.activeEditor=null;
	var c=b.record,h=this.colModel.getDataIndex(b.col);
	d=this.postEditValue(d,a,c,h);
	if(this.forceValidation===true||String(d)!==String(a)){
		var g={
			grid:this,
			record:c,
			field:h,
			originalValue:a,
			value:d,
			row:b.row,
			column:b.col,
			cancel:false
		};

		if(this.fireEvent("validateedit",g)!==false&&!g.cancel&&String(d)!==String(a)){
			c.set(h,g.value);
			delete g.cancel;
			this.fireEvent("afteredit",g)
			}
		}
	this.view.focusCell(b.row,b.col)
},
startEditing:function(i,c){
	this.stopEditing();
	if(this.colModel.isCellEditable(c,i)){
		this.view.ensureVisible(i,c,true);
		var d=this.store.getAt(i),h=this.colModel.getDataIndex(c),g={
			grid:this,
			record:d,
			field:h,
			value:d.data[h],
			row:i,
			column:c,
			cancel:false
		};

		if(this.fireEvent("beforeedit",g)!==false&&!g.cancel){
			this.editing=true;
			var b=this.colModel.getCellEditor(c,i);
			if(!b){
				return
			}
			if(!b.rendered){
				b.parentEl=this.view.getEditorParent(b);
				b.on({
					scope:this,
					render:{
						fn:function(e){
							e.field.focus(false,true)
							},
						single:true,
						scope:this
					},
					specialkey:function(l,k){
						this.getSelectionModel().onEditorKey(l,k)
						},
					complete:this.onEditComplete,
					canceledit:this.stopEditing.createDelegate(this,[true])
					})
				}
				Ext.apply(b,{
				row:i,
				col:c,
				record:d
			});
			this.lastEdit={
				row:i,
				col:c
			};

			this.activeEditor=b;
			b.selectSameEditor=(this.activeEditor==this.lastActiveEditor);
			var a=this.preEditValue(d,h);
			b.startEdit(this.view.getCell(i,c).firstChild,Ext.isDefined(a)?a:"");
			(function(){
				delete b.selectSameEditor
				}).defer(50)
			}
		}
},
preEditValue:function(a,c){
	var b=a.data[c];
	return this.autoEncode&&Ext.isString(b)?Ext.util.Format.htmlDecode(b):b
	},
postEditValue:function(c,a,b,d){
	return this.autoEncode&&Ext.isString(c)?Ext.util.Format.htmlEncode(c):c
	},
stopEditing:function(b){
	if(this.editing){
		var a=this.lastActiveEditor=this.activeEditor;
		if(a){
			a[b===true?"cancelEdit":"completeEdit"]();
			this.view.focusCell(a.row,a.col)
			}
			this.activeEditor=null
		}
		this.editing=false
	}
});
Ext.reg("editorgrid",Ext.grid.EditorGridPanel);
Ext.grid.GridEditor=function(b,a){
	Ext.grid.GridEditor.superclass.constructor.call(this,b,a);
	b.monitorTab=false
	};

Ext.extend(Ext.grid.GridEditor,Ext.Editor,{
	alignment:"tl-tl",
	autoSize:"width",
	hideEl:false,
	cls:"x-small-editor x-grid-editor",
	shim:false,
	shadow:false
});
Ext.grid.PropertyRecord=Ext.data.Record.create([{
	name:"name",
	type:"string"
},"value"]);
Ext.grid.PropertyStore=Ext.extend(Ext.util.Observable,{
	constructor:function(a,b){
		this.grid=a;
		this.store=new Ext.data.Store({
			recordType:Ext.grid.PropertyRecord
			});
		this.store.on("update",this.onUpdate,this);
		if(b){
			this.setSource(b)
			}
			Ext.grid.PropertyStore.superclass.constructor.call(this)
		},
	setSource:function(c){
		this.source=c;
		this.store.removeAll();
		var b=[];
		for(var a in c){
			if(this.isEditableValue(c[a])){
				b.push(new Ext.grid.PropertyRecord({
					name:a,
					value:c[a]
					},a))
				}
			}
		this.store.loadRecords({
		records:b
	},{},true)
	},
onUpdate:function(e,a,d){
	if(d==Ext.data.Record.EDIT){
		var b=a.data.value;
		var c=a.modified.value;
		if(this.grid.fireEvent("beforepropertychange",this.source,a.id,b,c)!==false){
			this.source[a.id]=b;
			a.commit();
			this.grid.fireEvent("propertychange",this.source,a.id,b,c)
			}else{
			a.reject()
			}
		}
},
getProperty:function(a){
	return this.store.getAt(a)
	},
isEditableValue:function(a){
	return Ext.isPrimitive(a)||Ext.isDate(a)
	},
setValue:function(d,c,a){
	var b=this.getRec(d);
	if(b){
		b.set("value",c);
		this.source[d]=c
		}else{
		if(a){
			this.source[d]=c;
			b=new Ext.grid.PropertyRecord({
				name:d,
				value:c
			},d);
			this.store.add(b)
			}
		}
},
remove:function(b){
	var a=this.getRec(b);
	if(a){
		this.store.remove(a);
		delete this.source[b]
	}
},
getRec:function(a){
	return this.store.getById(a)
	},
getSource:function(){
	return this.source
	}
});
Ext.grid.PropertyColumnModel=Ext.extend(Ext.grid.ColumnModel,{
	nameText:"Name",
	valueText:"Value",
	dateFormat:"m/j/Y",
	trueText:"true",
	falseText:"false",
	constructor:function(c,b){
		var d=Ext.grid,e=Ext.form;
		this.grid=c;
		d.PropertyColumnModel.superclass.constructor.call(this,[{
			header:this.nameText,
			width:50,
			sortable:true,
			dataIndex:"name",
			id:"name",
			menuDisabled:true
		},{
			header:this.valueText,
			width:50,
			resizable:false,
			dataIndex:"value",
			id:"value",
			menuDisabled:true
		}]);
		this.store=b;
		var a=new e.Field({
			autoCreate:{
				tag:"select",
				children:[{
					tag:"option",
					value:"true",
					html:this.trueText
					},{
					tag:"option",
					value:"false",
					html:this.falseText
					}]
				},
			getValue:function(){
				return this.el.dom.value=="true"
				}
			});
	this.editors={
		date:new d.GridEditor(new e.DateField({
			selectOnFocus:true
		})),
		string:new d.GridEditor(new e.TextField({
			selectOnFocus:true
		})),
		number:new d.GridEditor(new e.NumberField({
			selectOnFocus:true,
			style:"text-align:left;"
		})),
		"boolean":new d.GridEditor(a,{
			autoSize:"both"
		})
		};

	this.renderCellDelegate=this.renderCell.createDelegate(this);
	this.renderPropDelegate=this.renderProp.createDelegate(this)
	},
renderDate:function(a){
	return a.dateFormat(this.dateFormat)
	},
renderBool:function(a){
	return this[a?"trueText":"falseText"]
	},
isCellEditable:function(a,b){
	return a==1
	},
getRenderer:function(a){
	return a==1?this.renderCellDelegate:this.renderPropDelegate
	},
renderProp:function(a){
	return this.getPropertyName(a)
	},
renderCell:function(d,b,c){
	var a=this.grid.customRenderers[c.get("name")];
	if(a){
		return a.apply(this,arguments)
		}
		var e=d;
	if(Ext.isDate(d)){
		e=this.renderDate(d)
		}else{
		if(typeof d=="boolean"){
			e=this.renderBool(d)
			}
		}
	return Ext.util.Format.htmlEncode(e)
	},
getPropertyName:function(b){
	var a=this.grid.propertyNames;
	return a&&a[b]?a[b]:b
	},
getCellEditor:function(a,e){
	var b=this.store.getProperty(e),d=b.data.name,c=b.data.value;
	if(this.grid.customEditors[d]){
		return this.grid.customEditors[d]
		}
		if(Ext.isDate(c)){
		return this.editors.date
		}else{
		if(typeof c=="number"){
			return this.editors.number
			}else{
			if(typeof c=="boolean"){
				return this.editors["boolean"]
				}else{
				return this.editors.string
				}
			}
	}
},
destroy:function(){
	Ext.grid.PropertyColumnModel.superclass.destroy.call(this);
	this.destroyEditors(this.editors);
	this.destroyEditors(this.grid.customEditors)
	},
destroyEditors:function(b){
	for(var a in b){
		Ext.destroy(b[a])
		}
	}
	});
Ext.grid.PropertyGrid=Ext.extend(Ext.grid.EditorGridPanel,{
	enableColumnMove:false,
	stripeRows:false,
	trackMouseOver:false,
	clicksToEdit:1,
	enableHdMenu:false,
	viewConfig:{
		forceFit:true
	},
	initComponent:function(){
		this.customRenderers=this.customRenderers||{};

		this.customEditors=this.customEditors||{};

		this.lastEditRow=null;
		var b=new Ext.grid.PropertyStore(this);
		this.propStore=b;
		var a=new Ext.grid.PropertyColumnModel(this,b);
		b.store.sort("name","ASC");
		this.addEvents("beforepropertychange","propertychange");
		this.cm=a;
		this.ds=b.store;
		Ext.grid.PropertyGrid.superclass.initComponent.call(this);
		this.mon(this.selModel,"beforecellselect",function(e,d,c){
			if(c===0){
				this.startEditing.defer(200,this,[d,1]);
				return false
				}
			},this)
	},
onRender:function(){
	Ext.grid.PropertyGrid.superclass.onRender.apply(this,arguments);
	this.getGridEl().addClass("x-props-grid")
	},
afterRender:function(){
	Ext.grid.PropertyGrid.superclass.afterRender.apply(this,arguments);
	if(this.source){
		this.setSource(this.source)
		}
	},
setSource:function(a){
	this.propStore.setSource(a)
	},
getSource:function(){
	return this.propStore.getSource()
	},
setProperty:function(c,b,a){
	this.propStore.setValue(c,b,a)
	},
removeProperty:function(a){
	this.propStore.remove(a)
	}
});
Ext.reg("propertygrid",Ext.grid.PropertyGrid);
Ext.grid.GroupingView=Ext.extend(Ext.grid.GridView,{
	groupByText:"Group By This Field",
	showGroupsText:"Show in Groups",
	hideGroupedColumn:false,
	showGroupName:true,
	startCollapsed:false,
	enableGrouping:true,
	enableGroupingMenu:true,
	enableNoGroups:true,
	emptyGroupText:"(None)",
	ignoreAdd:false,
	groupTextTpl:"{text}",
	groupMode:"value",
	cancelEditOnToggle:true,
	initTemplates:function(){
		Ext.grid.GroupingView.superclass.initTemplates.call(this);
		this.state={};

		var a=this.grid.getSelectionModel();
		a.on(a.selectRow?"beforerowselect":"beforecellselect",this.onBeforeRowSelect,this);
		if(!this.startGroup){
			this.startGroup=new Ext.XTemplate('<div id="{groupId}" class="x-grid-group {cls}">','<div id="{groupId}-hd" class="x-grid-group-hd" style="{style}"><div class="x-grid-group-title">',this.groupTextTpl,"</div></div>",'<div id="{groupId}-bd" class="x-grid-group-body">')
			}
			this.startGroup.compile();
		if(!this.endGroup){
			this.endGroup="</div></div>"
			}
		},
findGroup:function(a){
	return Ext.fly(a).up(".x-grid-group",this.mainBody.dom)
	},
getGroups:function(){
	return this.hasRows()?this.mainBody.dom.childNodes:[]
	},
onAdd:function(d,a,b){
	if(this.canGroup()&&!this.ignoreAdd){
		var c=this.getScrollState();
		this.fireEvent("beforerowsinserted",d,b,b+(a.length-1));
		this.refresh();
		this.restoreScroll(c);
		this.fireEvent("rowsinserted",d,b,b+(a.length-1))
		}else{
		if(!this.canGroup()){
			Ext.grid.GroupingView.superclass.onAdd.apply(this,arguments)
			}
		}
},
onRemove:function(e,a,b,d){
	Ext.grid.GroupingView.superclass.onRemove.apply(this,arguments);
	var c=document.getElementById(a._groupId);
	if(c&&c.childNodes[1].childNodes.length<1){
		Ext.removeNode(c)
		}
		this.applyEmptyText()
	},
refreshRow:function(a){
	if(this.ds.getCount()==1){
		this.refresh()
		}else{
		this.isUpdating=true;
		Ext.grid.GroupingView.superclass.refreshRow.apply(this,arguments);
		this.isUpdating=false
		}
	},
beforeMenuShow:function(){
	var c,a=this.hmenu.items,b=this.cm.config[this.hdCtxIndex].groupable===false;
	if((c=a.get("groupBy"))){
		c.setDisabled(b)
		}
		if((c=a.get("showGroups"))){
		c.setDisabled(b);
		c.setChecked(this.canGroup(),true)
		}
	},
renderUI:function(){
	var a=Ext.grid.GroupingView.superclass.renderUI.call(this);
	if(this.enableGroupingMenu&&this.hmenu){
		this.hmenu.add("-",{
			itemId:"groupBy",
			text:this.groupByText,
			handler:this.onGroupByClick,
			scope:this,
			iconCls:"x-group-by-icon"
		});
		if(this.enableNoGroups){
			this.hmenu.add({
				itemId:"showGroups",
				text:this.showGroupsText,
				checked:true,
				checkHandler:this.onShowGroupsClick,
				scope:this
			})
			}
			this.hmenu.on("beforeshow",this.beforeMenuShow,this)
		}
		return a
	},
processEvent:function(b,i){
	Ext.grid.GroupingView.superclass.processEvent.call(this,b,i);
	var h=i.getTarget(".x-grid-group-hd",this.mainBody);
	if(h){
		var g=this.getGroupField(),d=this.getPrefix(g),a=h.id.substring(d.length),c=new RegExp("gp-"+Ext.escapeRe(g)+"--hd");
		a=a.substr(0,a.length-3);
		if(a||c.test(h.id)){
			this.grid.fireEvent("group"+b,this.grid,g,a,i)
			}
			if(b=="mousedown"&&i.button==0){
			this.toggleGroup(h.parentNode)
			}
		}
},
onGroupByClick:function(){
	var a=this.grid;
	this.enableGrouping=true;
	a.store.groupBy(this.cm.getDataIndex(this.hdCtxIndex));
	a.fireEvent("groupchange",a,a.store.getGroupState());
	this.beforeMenuShow();
	this.refresh()
	},
onShowGroupsClick:function(a,b){
	this.enableGrouping=b;
	if(b){
		this.onGroupByClick()
		}else{
		this.grid.store.clearGrouping();
		this.grid.fireEvent("groupchange",this,null)
		}
	},
toggleRowIndex:function(c,a){
	if(!this.canGroup()){
		return
	}
	var b=this.getRow(c);
	if(b){
		this.toggleGroup(this.findGroup(b),a)
		}
	},
toggleGroup:function(c,b){
	var a=Ext.get(c);
	b=Ext.isDefined(b)?b:a.hasClass("x-grid-group-collapsed");
	if(this.state[a.id]!==b){
		if(this.cancelEditOnToggle!==false){
			this.grid.stopEditing(true)
			}
			this.state[a.id]=b;
		a[b?"removeClass":"addClass"]("x-grid-group-collapsed")
		}
	},
toggleAllGroups:function(c){
	var b=this.getGroups();
	for(var d=0,a=b.length;d<a;d++){
		this.toggleGroup(b[d],c)
		}
	},
expandAllGroups:function(){
	this.toggleAllGroups(true)
	},
collapseAllGroups:function(){
	this.toggleAllGroups(false)
	},
getGroup:function(a,e,i,k,b,h){
	var c=this.cm.config[b],d=i?i.call(c.scope,a,{},e,k,b,h):String(a);
	if(d===""||d==="&#160;"){
		d=c.emptyGroupText||this.emptyGroupText
		}
		return d
	},
getGroupField:function(){
	return this.grid.store.getGroupState()
	},
afterRender:function(){
	if(!this.ds||!this.cm){
		return
	}
	Ext.grid.GroupingView.superclass.afterRender.call(this);
	if(this.grid.deferRowRender){
		this.updateGroupWidths()
		}
	},
afterRenderUI:function(){
	Ext.grid.GroupingView.superclass.afterRenderUI.call(this);
	if(this.enableGroupingMenu&&this.hmenu){
		this.hmenu.add("-",{
			itemId:"groupBy",
			text:this.groupByText,
			handler:this.onGroupByClick,
			scope:this,
			iconCls:"x-group-by-icon"
		});
		if(this.enableNoGroups){
			this.hmenu.add({
				itemId:"showGroups",
				text:this.showGroupsText,
				checked:true,
				checkHandler:this.onShowGroupsClick,
				scope:this
			})
			}
			this.hmenu.on("beforeshow",this.beforeMenuShow,this)
		}
	},
renderRows:function(){
	var a=this.getGroupField();
	var e=!!a;
	if(this.hideGroupedColumn){
		var b=this.cm.findColumnIndex(a),d=Ext.isDefined(this.lastGroupField);
		if(!e&&d){
			this.mainBody.update("");
			this.cm.setHidden(this.cm.findColumnIndex(this.lastGroupField),false);
			delete this.lastGroupField
			}else{
			if(e&&!d){
				this.lastGroupField=a;
				this.cm.setHidden(b,true)
				}else{
				if(e&&d&&a!==this.lastGroupField){
					this.mainBody.update("");
					var c=this.cm.findColumnIndex(this.lastGroupField);
					this.cm.setHidden(c,false);
					this.lastGroupField=a;
					this.cm.setHidden(b,true)
					}
				}
		}
}
return Ext.grid.GroupingView.superclass.renderRows.apply(this,arguments)
},
doRender:function(c,h,s,a,q,t){
	if(h.length<1){
		return""
		}
		if(!this.canGroup()||this.isUpdating){
		return Ext.grid.GroupingView.superclass.doRender.apply(this,arguments)
		}
		var A=this.getGroupField(),p=this.cm.findColumnIndex(A),x,k="width:"+this.getTotalWidth()+";",e=this.cm.config[p],b=e.groupRenderer||e.renderer,u=this.showGroupName?(e.groupName||e.header)+": ":"",z=[],m,v,w,o;
	for(v=0,w=h.length;v<w;v++){
		var l=a+v,n=h[v],d=n.data[A];
		x=this.getGroup(d,n,b,l,p,s);
		if(!m||m.group!=x){
			o=this.constructId(d,A,p);
			this.state[o]=!(Ext.isDefined(this.state[o])?!this.state[o]:this.startCollapsed);
			m={
				group:x,
				gvalue:d,
				text:u+x,
				groupId:o,
				startRow:l,
				rs:[n],
				cls:this.state[o]?"":"x-grid-group-collapsed",
				style:k
			};

			z.push(m)
			}else{
			m.rs.push(n)
			}
			n._groupId=o
		}
		var y=[];
	for(v=0,w=z.length;v<w;v++){
		x=z[v];
		this.doGroupStart(y,x,c,s,q);
		y[y.length]=Ext.grid.GroupingView.superclass.doRender.call(this,c,x.rs,s,x.startRow,q,t);
		this.doGroupEnd(y,x,c,s,q)
		}
		return y.join("")
	},
getGroupId:function(a){
	var b=this.getGroupField();
	return this.constructId(a,b,this.cm.findColumnIndex(b))
	},
constructId:function(c,e,a){
	var b=this.cm.config[a],d=b.groupRenderer||b.renderer,g=(this.groupMode=="value")?c:this.getGroup(c,{
		data:{}
	},d,0,a,this.ds);
return this.getPrefix(e)+Ext.util.Format.htmlEncode(g)
},
canGroup:function(){
	return this.enableGrouping&&!!this.getGroupField()
	},
getPrefix:function(a){
	return this.grid.getGridEl().id+"-gp-"+a+"-"
	},
doGroupStart:function(a,d,b,e,c){
	a[a.length]=this.startGroup.apply(d)
	},
doGroupEnd:function(a,d,b,e,c){
	a[a.length]=this.endGroup
	},
getRows:function(){
	if(!this.canGroup()){
		return Ext.grid.GroupingView.superclass.getRows.call(this)
		}
		var k=[],c=this.getGroups(),h,e=0,a=c.length,d,b;
	for(;e<a;++e){
		h=c[e].childNodes[1];
		if(h){
			h=h.childNodes;
			for(d=0,b=h.length;d<b;++d){
				k[k.length]=h[d]
				}
			}
		}
	return k
},
updateGroupWidths:function(){
	if(!this.canGroup()||!this.hasRows()){
		return
	}
	var c=Math.max(this.cm.getTotalWidth(),this.el.dom.offsetWidth-this.getScrollOffset())+"px";
	var b=this.getGroups();
	for(var d=0,a=b.length;d<a;d++){
		b[d].firstChild.style.width=c
		}
	},
onColumnWidthUpdated:function(c,a,b){
	Ext.grid.GroupingView.superclass.onColumnWidthUpdated.call(this,c,a,b);
	this.updateGroupWidths()
	},
onAllColumnWidthsUpdated:function(a,b){
	Ext.grid.GroupingView.superclass.onAllColumnWidthsUpdated.call(this,a,b);
	this.updateGroupWidths()
	},
onColumnHiddenUpdated:function(b,c,a){
	Ext.grid.GroupingView.superclass.onColumnHiddenUpdated.call(this,b,c,a);
	this.updateGroupWidths()
	},
onLayout:function(){
	this.updateGroupWidths()
	},
onBeforeRowSelect:function(b,a){
	this.toggleRowIndex(a,true)
	}
});
Ext.grid.GroupingView.GROUP_ID=1000;